从C#应用程序到雅虎的电子邮件错误
本文关键字:电子邮件 错误 雅虎 应用程序 | 更新日期: 2023-09-27 18:24:45
我可以从我的系统ping smtp.mail.yahoo.com,但当我使用yahoo地址从以下代码发送电子邮件时,会出现错误transport failed to connect to server
。同样的代码成功地从gmail帐户发送了电子邮件。
我正在为雅虎使用端口465。
MailMessage oMsg = new MailMessage();
oMsg.From = from.Text;
oMsg.To = to.Text;
oMsg.Subject = "Hi";
oMsg.BodyFormat = MailFormat.Html;
oMsg.Body = msg.Text;
oMsg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpserverport", port);
oMsg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpserver", host);
oMsg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusing", 2);
WebProxy proxy = WebProxy.GetDefaultProxy();
if (proxy.Address != null)
{
oMsg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/urlproxyserver", proxy.Address.Host);
oMsg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/proxyserverport", proxy.Address.Port);
}
oMsg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpusessl", true);
oMsg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", "1");
oMsg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername",from.Text);
oMsg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword", pass.Text);
// ADD AN ATTACHMENT.
/* MailAttachment oAttch = new MailAttachment(path+ "''Image.bmp", MailEncoding.Base64);
oMsg.Attachments.Add(oAttch);*/
SmtpMail.SmtpServer.Insert(0,host);
if (proxy.Address != null)
MessageBox.Show("Sending via proxy settings: " + proxy.Address.ToString());
try
{
SmtpMail.Send(oMsg);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
oMsg = null;
知道为什么会出现这种错误吗?
是否能够ping主机并不能说明你是否能够连接到主机上的特定服务。为此,你需要尝试实际建立连接。(当然,您可以建立连接这一事实并不一定意味着有问题的服务工作正常。)
通常,最好使用telnet
尝试连接到相关端口上的远程主机。命令行上的语法就是简单的telnet host.fqdn.example.com portnumber
。这将告诉您在管道的另一端是否有任何东西对连接尝试做出响应,这是确定问题所在的第一步。
其次,通常最好将代码修剪为显示有问题行为的最小版本,并包含完整的代码来显示有问题的行为。您在代码中使用了许多变量,而我们对此一无所知。
一些ISP会阻止到其邮件服务器以外主机上SMTP端口的传出连接,以减少传出垃圾邮件的数量。也许host
中的值有拼写错误?也许您无意中使用了一些意想不到的MailMessage
实现?等等。
也就是说,如果你使用代理来使用该代码进行连接,我肯定会首先尝试手动连接到有问题的邮件服务器。如果这也不起作用,那么你的问题至少与问题中的代码无关,你可以看看其他地方(在这种情况下,一个可能的候选者是ISP过滤器;也许他们有一个允许的外部SMTP主机列表,而雅虎不在其中?)。