Электронная почта для Yahoo из-за ошибки приложения C # - PullRequest
0 голосов
/ 15 февраля 2012

Я могу пропинговать smtp.mail.yahoo.com из своей системы, но когда я отправляю электронное письмо со следующего кода, используя адрес Yahoo, выдает ошибку transport failed to connect to server.Тот же код успешно отправляет электронное письмо из учетной записи gmail.

Я использую порт 465 для Yahoo.

    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;

Есть идеи, почему возникает эта ошибка?

1 Ответ

1 голос
/ 15 февраля 2012

Возможность (или нет) пинговать хост ничего не говорит о том, сможете ли вы подключиться к определенной службе на нем.Для этого вам нужно попытаться установить соединение.(И, разумеется, тот факт, что вы можете установить соединение, не обязательно означает, что рассматриваемая служба работает должным образом.)

Обычно рекомендуется использовать telnet, чтобы попытаться подключиться к удаленномухост на рассматриваемом порту.Синтаксис в командной строке просто telnet host.fqdn.example.com portnumber.Это скажет вам, есть ли вообще что-либо на другом конце канала, реагирующее на попытки соединения, что является первым шагом в определении, где проблема.

Во-вторых, обычно это хорошая идея, чтобы урезатькод для минимальной версии, которая демонстрирует проблемное поведение, и включает полный код, чтобы показать проблемное поведение.Вы используете в своем коде ряд переменных, о которых мы действительно ничего не знаем.

Некоторые интернет-провайдеры блокируют исходящие подключения к портам SMTP на хостах, отличных от своих собственных почтовых серверов, чтобы уменьшить количество исходящего спама.Может быть, в значении host есть опечатка?Может быть, вы случайно использовали какую-то неожиданную реализацию MailMessage?И так далее.

Тем не менее, я определенно сначала попытался бы подключиться к рассматриваемому почтовому серверу вручную через прокси-сервер, если вы используете его для подключения с использованием этого кода.Если это тоже не сработает, то ваша проблема, по крайней мере, не имеет ничего общего с кодом в вопросе, и вы можете посмотреть в другом месте (в этом случае одним из возможных кандидатов будут фильтры ISP; возможно, у них есть список разрешенных внешних SMTPхосты и Yahoo там нет?).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...