Тайм-аут Ошибка при отправке почты - PullRequest
2 голосов
/ 04 июля 2011

Я использую этот код, чтобы попытаться отправить электронное письмо.Через несколько секунд он показывает мне сообщение об ошибке, утверждающее, что время операции истекло.Как я могу решить эту проблему?

try
{
    MailAddress from = new MailAddress("from@yahoo.com", "name", Encoding.UTF8);
    MailAddress to = new MailAddress("to@yahoo.com");
    MailMessage message = new MailMessage(from, to);
    message.Subject = "Test";
    message.SubjectEncoding = Encoding.UTF8;
    message.Body = "Test";
    message.BodyEncoding = Encoding.UTF8;
    SmtpClient client = new SmtpClient();
    client.Host = "smtp.mail.yahoo.com";
    client.Port = 465;
    client.EnableSsl = true;
    client.Credentials = new NetworkCredential("example@yahoo.com", "Password");
    client.Send(message);
    MessageBox.Show("sending Successfully!!!");
}
catch (SmtpException ex)
{
    MessageBox.Show(ex.ToString());
}

Ответы [ 4 ]

2 голосов
/ 04 июля 2011

Вы уверены, что можете набрать smtp.mail.yahoo.com по порту 465?Похоже, проблема, связанная с сетьюКак правило, когда время ожидания истекает, это означает, что оно пытается подключиться к серверу в течение определенного времени, и оно останавливается и выдает ошибку.

Один простой способ проверить это - telnet to smtp.mail.yahoo.com на порту 465 и посмотрите, не истекло ли оно.Вы можете использовать Putty или встроенный telnet -клиент в Windows, если он у вас установлен.

0 голосов
/ 12 августа 2013

Используйте следующие настройки для домена @yahoo.co.in.

    var smtp = new System.Net.Mail.SmtpClient();
        {
            smtp.Host ="smtp.mail.yahoo.co.in";
            smtp.Port = 25;
            smtp.EnableSsl = true;
            smtp.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;
            smtp.Credentials = new NetworkCredential(fromAddress, fromPassword);
            smtp.Timeout = 20000;
        }
0 голосов
/ 24 мая 2013

у меня была такая же проблема Вы должны установить clietn.port как 25 и указать свой логин и пароль в client.Credentials = новый NetworkCredential (логин, пароль)

когда я это сделал, я могу отправлять почту без проблем

есть код

{
SmtpClient client = new SmtpClient("188.125.69.59");//you can put the ip adress or the dns of smtp server (smtp.mail.yahoo.com as exemple)
                // Specify the e-mail sender.
                // Create a mailing address that includes a UTF8 character
                // in the display name.
                MailAddress from = new MailAddress("from@yahoo.fr");
                // Set destinations for the e-mail message.
                MailAddress to = new MailAddress("to@gmail.com");
                // Specify the message content.
                MailMessage message = new MailMessage(from, to);
                message.Body = "This is a test e-mail message sent by an application. ";
                // Include some non-ASCII characters in body and subject.
                string someArrows = new string(new char[] {'\u2190', '\u2191', '\u2192', '\u2193'});
                message.Body ="cc";
                message.BodyEncoding =  System.Text.Encoding.UTF8;
                message.Subject = "test message 1";
                message.SubjectEncoding = System.Text.Encoding.UTF8;
                string userState = "test message1";
                MessageBox.Show("sending"); 
                client.Port = 25;
               // client.Timeout = 40000;
                client.ServicePoint.MaxIdleTime = 1;
                client.Credentials = new System.Net.NetworkCredential("from@yahoo.fr", "pass");
                //client.SendAsync(message, userState);
                client.Send(message);
                MessageBox.Show("Sending message... press c to cancel mail. Press any other key to exit.");
                string answer = Console.ReadLine();
                // If the user canceled the send, and mail hasn't been sent yet,
                // then cancel the pending operation.
               // if (answer.StartsWith("c") && mailSent == false)
                //{
                  //  client.SendAsyncCancel();
                //}
                // Clean up.
                message.Dispose();
                MessageBox.Show("Goodbye.");
}
0 голосов
/ 04 июля 2011

Насколько я понимаю, ваш код не будет работать, потому что yahoo.com не предоставляет вам доступ через SMTP.Для этого вам нужно перейти на Yahoo!Mail Plus .

Не удалось найти какой-либо килобайт от Yahoo!на этом.Я получил информацию от Yahoo!статья на Как читать Yahoo!Mail Plus с использованием Outlook Express .Первые две строчки статьи очень актуальны.

Хотите прочитать и отправить свой Yahoo!электронная почта с Outlook Express?
Если вы являетесь Yahoo!Пользователь Mail Plus вы можете.

А также, исходящий SMTP-сервер должен быть

client.Host = "plus.smtp.mail.yahoo.com";
...