[POWERSHELL] เขียน Script ส่งเมล์กันครับ

เนื่องจาก Service เดิมที่ใช้ส่งเมล์แจ้งเตือนเรื่อง Build เกิดปัญหา เลยถือโอกาศปรับจากเดิมที่เป็น exe ของ vb6 ที่ไม่รองรับ Security ใหม่ๆ มาใช้เป็น PowerShell ให้ส่งเมล์ผ่าน Gmail แทนครับ ซึ่งมันเอาไปผูกกับ Jenkins ได้สะดวกด้วย เลยขอมาสรุปขั้นตอน และ Script ที่ใช้งาน

เตรียมตัว

Script PowerShell ที่ใช้

  • Script สั้นๆครับ เพราะจริงๆ แล้วตัว PowerShell เรียกใช้ Library ของ .NET มาอยู่แล้วครับ
$SMTPSERVER = "smtp.gmail.com"
$SMTPPORT = 587
$From = "autodsbot@gmail.com"
$To = "pfaii@gmail.com"
$Subject = "Test Subject"
$Body = "This is a test message"
$SMTPMessage = New-Object System.Net.Mail.MailMessage($From, $To, $Subject, $Body) 
$Email = New-Object Net.Mail.SmtpClient($SMTPSERVER, $SMTPPORT )
$Email.EnableSsl = $true
$Email.Credentials = New-Object System.Net.NetworkCredential("autodsbot@gmail.com", "your_app_password");
$Email.Send($SMTPMessage)
  • จาก Script ข้างต้น Library ของ .NET ที่ใช้งาน
    • System.Net.Mail.MailMessage : เอาไว้สร้างเนิ้อหาของ Email ครับ
    • Net.Mail.SmtpClient : ส่งเมล์ผ่าน smtp.gmail.com ที่ port 587
    • System.Net.NetworkCredential : สร้างกุญแจสำหรับเข้าระบบเมล์ครับ โดยในที่นี้ ผมจะใส่ Email และ App Password ที่เตรียมไว้ครับ (App Password ไม่ใช่ Password ของ Email นะครับ) ไม่งั้นจะไปเจอ Error
Send-MailMessage : The SMTP server requires a secure connection or the client was not authenticated. The server
response was: 5.7.0 Authentication Required. Learn more at
At line:1 char:1
+ Send-MailMessage -SmtpServer smtp.gmail.com -Port 587 -UseSsl -From v ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (System.Net.Mail.SmtpClient:SmtpClient) [Send-MailMessage], SmtpExcept
   ion
    + FullyQualifiedErrorId : SmtpException,Microsoft.PowerShell.Commands.SendMailMessage

Discover more from naiwaen@DebuggingSoft

Subscribe to get the latest posts to your email.