从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;

知道为什么会出现这种错误吗?

从C#应用程序到雅虎的电子邮件错误

是否能够ping主机并不能说明你是否能够连接到主机上的特定服务。为此,你需要尝试实际建立连接。(当然,您可以建立连接这一事实并不一定意味着有问题的服务工作正常。)

通常,最好使用telnet尝试连接到相关端口上的远程主机。命令行上的语法就是简单的telnet host.fqdn.example.com portnumber。这将告诉您在管道的另一端是否有任何东西对连接尝试做出响应,这是确定问题所在的第一步。

其次,通常最好将代码修剪为显示有问题行为的最小版本,并包含完整的代码来显示有问题的行为。您在代码中使用了许多变量,而我们对此一无所知。

一些ISP会阻止到其邮件服务器以外主机上SMTP端口的传出连接,以减少传出垃圾邮件的数量。也许host中的值有拼写错误?也许您无意中使用了一些意想不到的MailMessage实现?等等。

也就是说,如果你使用代理来使用该代码进行连接,我肯定会首先尝试手动连接到有问题的邮件服务器。如果这也不起作用,那么你的问题至少与问题中的代码无关,你可以看看其他地方(在这种情况下,一个可能的候选者是ISP过滤器;也许他们有一个允许的外部SMTP主机列表,而雅虎不在其中?)。