【问题标题】:How do I send e-mail from an AT&T residential account with System.Net.Mail.SmtpClient?如何使用 System.Net.Mail.SmtpClient 从 AT&T 住宅帐户发送电子邮件?
【发布时间】: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


【解决方案1】:

我已经设法使用非安全端口 587 通过 smtp.att.yahoo.com 发送电子邮件:

client.Port = 587;
client.EnableSsl = false;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-01
    • 2015-02-17
    • 2012-03-30
    • 2011-05-29
    • 2011-03-08
    • 1970-01-01
    • 1970-01-01
    • 2013-03-24
    相关资源
    最近更新 更多