2013-03-13 314 views
0

我用下面的代碼通過一個窗口服務發送沒有問題的電子郵件: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,但沒有奏效。

我應該怎麼做才能禁用驗證碼保護,或者有什麼要做的以編程方式發送電子郵件,而無需從網絡輸入驗證碼字符串?

回答

1

已被Gmail垃圾郵件過濾像郵件數量很多安全方面的考慮,你每小時發送,被標記你的郵件由接收垃圾郵件...

如果你要使用Gmail的批量郵寄你會遇到很多問題。在這種情況下使用您自己的郵件服務器。