我用下面的代碼通過一個窗口服務發送沒有問題的電子郵件:Gmail的SMTP驗證問題
public bool Send()
{
bool RetSt = false;
try
{
MailMessage mail = new MailMessage();
mail.From = new MailAddress(_from);
for (int i = 0; i < _to.Count; i++)
mail.To.Add(_to[i]);
mail.Subject = _subject;
mail.Body = _body;
for (int i = 0; i < _attachmentList.Count; i++)
mail.Attachments.Add(_attachmentList[i]);
SmtpClient smtp = new SmtpClient();
smtp.Host = _smtpHost;
smtp.Port = _smtpPort;
smtp.Credentials = new NetworkCredential(_userName, _password);
smtp.EnableSsl = true;
smtp.Send(mail);
for (int i = 0; i < _attachmentList.Count; i++)
_ms[i].Dispose();
RetSt = true;
}
catch (Exception ex)
{
Service.WriteEventLog(ex.ToString(), EventLogEntryType.Error);
}
return RetSt;
}
對於服務開始後約2-3天,服務停止發送電子郵件由於Gmail的身份驗證問題。這是問題的例外:
「System.Net.Mail.SmtpException:SMTP服務器要求安全連接 或客戶端沒有經過認證的服務器響應 是:5.5.1需要驗證。在System.Net.Mail.MailCommand.Send(SmtpConnection 康恩,字節[]命令,從MailAddress,布爾allowUnicode)在 詳細處 System.Net.Mail.MailCommand.CheckResponse(SmtpStatusCode的StatusCode, 字符串響應) System.Net.Mail.SmtpTransport.SendMail(MailAddress發件人, MailAddressCollection收件人,字符串deliveryNotify,布爾 allowUnicode, SmtpFailedRecipientException &例外)在 System.Net.Mail.SmtpClient.Send(MailMessage消息) MaintenanceService.Email.Send() c:\ Users \ aydogan.ersoz \ Desktop \ maintenanceservice \ trunk \ MaintenanceServiceTest \ Email.cs :行 75「
當我控制Gmail帳戶時,Gmail要求輸入驗證碼。我正確輸入了captcha,我的Windows服務開始正常工作了。
我試過谷歌的solution,但沒有奏效。
我應該怎麼做才能禁用驗證碼保護,或者有什麼要做的以編程方式發送電子郵件,而無需從網絡輸入驗證碼字符串?