protected void SendEmail(object sender, EventArgs e)
{
SmtpClient smtpClient = new SmtpClient();
MailMessage message = new MailMessage();
try
{
MailAddress fromAddress = new MailAddress("fromemail", "From Me");
MailAddress toAddress = new MailAddress("toemail", "To You");
message.From = fromAddress;
message.To.Add(toAddress);
message.Subject = "Testing!";
message.Body = "This is the body of a sample message";
smtpClient.Host = "smtp.host.com";
smtpClient.Credentials = new System.Net.NetworkCredential("username", "password");
smtpClient.EnableSsl = true;
smtpClient.Port = 587;
smtpClient.Send(message);
statusLabel.Text = "Email sent.";
}
catch (Exception ex)
{
statusLabel.Text = "Coudn't send the message!\n"+ex.Message;
}
}
错误是
“发送邮件失败。”
我不能发送任何内容。 有什么问题?
innerexception是
System.Net.WebException:无法连接到远程服务器---> System.Net.Sockets.SocketException:连接尝试失败,因为连接方在一段时间后没有正确响应,或者建立的连接失败,因为连接的主机无法响应System.Net.Sockets.Socket上的74.125.39.109:587 System.Net.SService.ConnectSocketInternal的System.Net.Sockets.Socket.InternalConnect(EndPoint remoteEP)上的.DoConnect(EndPoint endPointSnapshot,SocketAddress socketAddress)(布尔值connectFailure,套接字s4,套接字s6,套接字&套接字,IPAddress&地址,ConnectSocketState state,IAsyncResult asyncResult,Int32 timeout,Exception& exception)---内部异常堆栈跟踪的结束---在System.Net.ServicePoint.GetConnection(PooledStream PooledStream,Object owner,Boolean async,IPAddress& address,Socket& abortSocket, System.Net.Poole上的System.Net.PooledStream.Activate(Object owningObject,Boolean async,Int32 timeout,GeneralAsyncDelegate asyncCallback)中的Socket& abortSocket6,Int32 timeout) System.Net上的System.Net.Mail.SmtpConnection.GetConnection(String host,Int32 port)上的System.Net.ConnectionPool.GetConnection(Object owningObject,GeneralAsyncDelegate asyncCallback,Int32 creationTimeout)中的dStream.Activate(Object owningObject,GeneralAsyncDelegate asyncCallback)。 System.SNet.Mail.SmtpClient.Send(MailMessage消息)中的System.Net.Mail.SmtpClient.GetConnection()上的Mail.SmtpTransport.GetConnection(字符串主机,Int32端口)
答案 0 :(得分:2)
对于SmtpException
,您总是必须通过Exception.InnerException
属性检查内部异常。总是
答案 1 :(得分:2)
删除try / catch,看看会发生什么: - )
您可以先在本地测试:
<mailSettings>
<smtp deliveryMethod='SpecifiedPickupDirectory'>
<specifiedPickupDirectory pickupDirectoryLocation="c:\maildrop" />
</smtp>
</mailSettings>
更多详情:
答案 2 :(得分:1)
从内部异常:74.125.39.109:587无法到达。
确保:
测试的一种方法是从同一台服务器打开到74.125.39.109:587的telnet连接。
答案 3 :(得分:0)
尝试取出所有smtp服务器设置并将mailSettings放入app / web.config
有时邮件服务器不允许邮件中继。在这种情况下,您需要设置虚拟smtp服务器。
如果您使用的是Windows Server 2008,则需要安装IIS 6管理控制台来配置中继。
答案 4 :(得分:0)
默认SMTP端口为25.您使用的是587,这可能是问题所在。或者是否有使用端口的原因?
答案 5 :(得分:0)
你使用587作为端口....这类似于gmail的smtp服务端口号....如果你使用gmail smtp服务...尝试使用这个......
主持人:smtp.gmail.com 港口:587
在网络清单中提供有效的gmail用户名及其密码......
还检查您的互联网连接
答案 6 :(得分:-1)
我记得我遇到类似的问题,我找到的解决方案是:
之前:
smtpClient.Send(message);
把这一行:
ServicePointManager.ServerCertificateValidationCallback = delegate(object s, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) { return true; };
顺便说一句:
端口应该是:
smtp.Port = 25;