เนื่องจาก Service เดิมที่ใช้ส่งเมล์แจ้งเตือนเรื่อง Build เกิดปัญหา เลยถือโอกาศปรับจากเดิมที่เป็น exe ของ vb6 ที่ไม่รองรับ Security ใหม่ๆ มาใช้เป็น PowerShell ให้ส่งเมล์ผ่าน Gmail แทนครับ ซึ่งมันเอาไปผูกกับ Jenkins ได้สะดวกด้วย เลยขอมาสรุปขั้นตอน และ Script ที่ใช้งาน
เตรียมตัว
- Google Account ที่ทำ App Password เรียบร้อย ถ้าใครยังไม่ทำสามารถศึกษาจาก Blog ผมได้ครับ
- ติดตั้ง PowerShell ให้เรียบร้อย (ปกติมันลงมาพร้อมกับ Windows )
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 sent to your email.