Asp.net 使用System.Net.Mail通过谷歌应用发送电子邮件超时
我有一个ASP.NET 4.0 web应用程序,人力资源团队使用它向员工发送调查。由于我们使用的是谷歌应用程序,我试图通过谷歌应用程序帐户发送这些调查电子邮件 我使用以下设置发送电子邮件Asp.net 使用System.Net.Mail通过谷歌应用发送电子邮件超时,asp.net,email,gmail,smtpclient,Asp.net,Email,Gmail,Smtpclient,我有一个ASP.NET 4.0 web应用程序,人力资源团队使用它向员工发送调查。由于我们使用的是谷歌应用程序,我试图通过谷歌应用程序帐户发送这些调查电子邮件 我使用以下设置发送电子邮件 Host - smtp.gmail.com Port - 587 EnableSsl=true using (SmtpClient smtp = new SmtpClient()) { smtp.Timeout = 0;
Host - smtp.gmail.com
Port - 587
EnableSsl=true
using (SmtpClient smtp = new SmtpClient())
{
smtp.Timeout = 0;
smtp.Send(message);
}
还有我的用户名和密码
这是发送电子邮件的代码
Host - smtp.gmail.com
Port - 587
EnableSsl=true
using (SmtpClient smtp = new SmtpClient())
{
smtp.Timeout = 0;
smtp.Send(message);
}
设置位于web.config中,并从中读取
现在是我的问题
人力资源团队选择多个用户发送调查。他们可以一次只选择一个或最多100个发送调查。由于每个调查链接必须是不同的,我迭代了用户列表并通过电子邮件发送给他们
现在,在应用程序最多发送12封电子邮件之后,它就不再发送了。它试图发送的下一封电子邮件会抛出一个错误
Message = The operation has timed out.
Status Code =GeneralFailure
Stack Trace = at System.Net.Mail.SmtpClient.Send(MailMessage message)
at ABC.Business.Mail.SendMail(MailMessage message, String& errorMessage)
然后,如果我再次重试,它将抛出一个错误
Message = Failure sending mail.
Status Code =GeneralFailure
Stack Trace = at System.Net.Mail.SmtpClient.Send(MailMessage message)
at ABC.Business.Mail.SendMail(MailMessage message, String& errorMessage)
如果它达到这种状态,唯一的出路是重新启动IIS。如果我重新启动IIS,它将在接下来的12个月内再次正常工作
可能是什么问题?请帮助。您不应该将超时设置为零
它的默认值为10000ms(100秒),请至少保持该值。克里斯,超时使ASP.NET应用程序等待请求执行,然后自动关闭。所以,如果您将timeOut设置为零,ASP.NET将不会等待请求执行,并且会在操作超时时抛出错误 超时时间应至少为180秒
谢谢。System.Net.Mail只支持“显式SSL”。 显式SSL System.Net.Mail仅支持“显式SSL”。显式SSL在端口25上以未加密方式启动,然后发出STARTDLS并切换到加密连接。见RFC 2228 显式SLL类似于:连接25->StartTLS(开始加密)->验证->发送数据 如果SMTP服务器从一开始就需要SSL/TLS连接,那么这将不起作用 隐式SSL 无法在System.Net.Mail中使用隐式SSL(SMTPS)。隐式SSL将使整个连接包装在SSL层中。将使用特定端口(端口465是通用的)。没有涵盖隐式SSL的正式RFC 隐式SLL类似于:启动SSL(启动加密)->连接->身份验证->发送数据 这不是一个bug,而是一个功能请求。SMTP有两种类型的SSL身份验证,我们只支持一种(按设计)——显式SSL。 演示代码: *
protectedvoid Btn\u SendMail\u单击(对象发送者,事件参数e)
{
尝试
{
var fromAddress=”xyz@gmail.com";
var toAddress=”abc@gmail.com";
常量字符串fromPassword=“xxxxxxxx”;
string subject=“发送演示”;
string body=“From:”+txtFrom.Text+“\n”;
var smtp=new System.Net.Mail.SmtpClient();
{
smtp.Host=“smtp.gmail.com”;
smtp.Port=25;
smtp.EnableSsl=true;
smtp.Credentials=新的网络凭据(fromAddress,fromPassword);
}
smtp.Send(fromAddress、toAddress、subject、body);
响应。写入(“警报(‘发送’)”);
}
捕获(例外情况除外)
{
txtBody.Text=ex.Message;
}
}
*
这段代码没有任何错误 我认为将超时设置为0意味着无限等待?我错了吗?