【发布时间】:2011-05-24 09:55:49
【问题描述】:
抱歉,如果这应该出现在 SuperUser 上,但这似乎是我遇到的 .NET 配置问题,而不是我的 ISP 的问题。
我正在尝试使用 System.Net.Mail.SmtpClient 发送电子邮件。我在 AT&T Uverse 住宅线路上,所以出站端口 25 被完全阻止,发送电子邮件的唯一方法是通过他们批准的 SMTP 服务器,通过端口 465,通过 SSL。可以在此处找到设置:https://www.att.com/esupport/article.jsp?sid=KB401570&ct=9000812。当我尝试使用我认为正确的 SmtpClient 设置发送电子邮件时,我得到的只是“System.IO.IOException:无法从传输连接读取数据:现有连接被远程主机强行关闭。 "
这是我的代码:
var client = new SmtpClient();
client.Host = "smtp.att.yahoo.com";
client.Port = 465;
client.EnableSsl = true;
client.UseDefaultCredentials = false;
client.Credentials = new NetworkCredential("email@bellsouth.net", "password");
client.DeliveryMethod = SmtpDeliveryMethod.Network;
var message = new MailMessage();
message.From = new MailAddress("email@bellsouth.net");
message.To.Add(new MailAddress("foo@gmail.com"));
message.Subject = "Subject";
message.Body = "This is the body";
client.Send(message);
调用 client.Send(message) 时发生异常。我也尝试过如下使用 App.config:
<configuration>
<system.net>
<mailSettings>
<smtp deliveryMethod="Network">
<network
host="smtp.att.yahoo.com"
port="465"
defaultCredentials="false"
enableSsl="true"
userName="email@bellsouth.net"
password="password"
/>
</smtp>
</mailSettings>
</system.net>
</configuration>
然后被 C# 代码留下:
var client = new SmtpClient();
var message = new MailMessage();
message.From = new MailAddress("email@bellsouth.net");
message.To.Add(new MailAddress("foo@gmail.com"));
message.Subject = "Subject";
message.Body = "This is the body";
client.Send(message);
还有其他我应该使用的设置吗?有没有人成功通过smtp.att.yahoo.com从.NET 发送电子邮件?我可以说这在 Outlook 中确实有效,所以它不像某处有一些障碍。
编辑: Gmail 已退出,因为我需要能够保持发件人地址动态,并且 gmail 会强制发件人使用该帐户。即我有一个域,我需要能够从@mydomain.com 发送。
【问题讨论】:
-
只是好奇 - AT&T 为电子邮件提供了哪些值得麻烦的方法?
-
我当然不会因为我的电子邮件需求而去找他们。但是,为了能够发送电子邮件(无需支付中继费用),我必须使用他们唯一的路径。
-
你为什么不直接使用 Gmail?
-
我不希望 FROM: 受到限制。
-
您是否尝试过通过 Telnet 发送电子邮件?例如:-->yuki-onna.co.uk/email/smtp.html
标签: c# smtpclient