我使用以下代码通过Windows服务发送没有问题的电子邮件:
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.CheckResponse(SmtpStatusCode statusCode, System.Net.Mail.MailCommand.Send的字符串响应(SmtpConnection conn,Byte []命令,MailAddress from,Boolean allowUnicode)at System.Net.Mail.SmtpTransport.SendMail(MailAddress sender, MailAddressCollection收件人,String deliveryNotify,布尔值 allowUnicode,SmtpFailedRecipientException&amp;例外) System.Net.Mail.SmtpClient.Send(MailMessage消息)at MaintenanceService.Email.Send()中 C:\ Users \用户aydogan.ersoz \桌面\ maintenanceservice \树干\ MaintenanceServiceTest \ Email.cs:线 75"
当我控制Gmail帐户时,Gmail会要求验证码。我正确输入验证码,我的Windows服务再次开始正常工作。
我尝试了Google的solution,但它没有用。
我应该怎样做才能禁用验证码保护,或者在没有从网络上输入验证码字符串的情况下以编程方式发送电子邮件?
答案 0 :(得分:1)
GMail对垃圾邮件过滤有很多安全注意事项,例如您每小时发送的电子邮件数量,您的电子邮件被接收方标记为垃圾邮件......
如果您要使用GMail进行批量邮寄,您将遇到许多问题。在这种情况下使用您自己的邮件服务器。