最近 Google 在5/30 之後關閉了低安全性登入的應用程式存取,所以有些透過gmail 發信的服務可能會發生錯誤,我是跳出下列的錯誤[The SMTP server requires a secure connection or the client was not authenticated. The server response was: 5.7.0 Authentication Required.]這邊記錄一下解決方法。
修正安全性問題
首先,先去發信帳號的安全性設定,接著找到登入的位置
第一步,先開啟這帳號的兩步驟驗證,開啟這個就不特別說明了。
第二步,點選下方的的應用程式密碼,通常會要你再輸入一次密碼,然後就會看到下圖。
上圖紅框的地方,選取應用程式跟裝置,接著按下產生。就會產生下圖的密碼,把這密碼複製起來準備到程式裏面用。
點選完成後就會看到,多了一個應用程式密碼。
最後拿著密碼去程式碼裏面把原本的密碼換掉,就可以正常的寄信了。
如果是第一次串接 Gmail 發信,請看下列程式碼~
public class GMailAdapter
{
public void SendMail(string emails, string title, string content, string paths)
{
var mail = new MailMessage();
// 收件人 Email 地址
foreach (var email in emails.Split(','))
{
mail.To.Add(email);
}
// 主旨
mail.Subject = title;
// 內文
mail.Body = content;
// 內文是否為 HTML
mail.IsBodyHtml = true;
// 優先權
mail.Priority = MailPriority.Normal;
// 發信來源,最好與你發送信箱相同,否則容易被其他的信箱判定為垃圾郵件.
mail.From = new MailAddress("SenderEmail@gmail.com", "Sender Name");
// 附加檔案,如果沒有附加檔案不用這一趴
foreach (var path in paths.Split(','))
{
Attachment attachment = new Attachment(path);
mail.Attachments.Add(attachment);
}
// Gmail 的 SMTP 設定
var smtp = new SmtpClient("smtp.gmail.com", 587)
{
Credentials = new System.Net.NetworkCredential("SenderEmail", "應用程式密碼放這"),
EnableSsl = true
};
// 投遞出去
smtp.Send(mail);
mail.Dispose();
}
}
以上就是本次的筆記,雖然把密碼放在程式碼裏面不是太好的事情,但難免會有這種需要便宜行事的時候,有需要的人再自行取捨。
如有指正之處,歡迎隨時提出