код для отправки электронной почты

Что я здесь делаю не так?

 private void SendMail(string from, string body)
    {
        string mailServerName = "plus.pop.mail.yahoo.com";
        MailMessage message = new MailMessage(from, "[email protected]", "feedback", body);
        SmtpClient mailClient = new SmtpClient();
        mailClient.Host = mailServerName;
        mailClient.Send(message);
        message.Dispose();
    }

Получила следующую ошибку:

Попытка подключения не удалась, потому что подключенная сторона не ответила должным образом по прошествии определенного периода времени, или установление соединения не удалось, потому что подключенный хост не ответил 209.191.108.191:25


person aherlambang    schedule 04.04.2010    source источник


Ответы (3)


Вы используете неправильный сервер . Вам нужно будет использовать настройки SMTP.

попробуйте этот сервер: plus.smtp.mail.yahoo.com Их сайт отмечает этот хост как SSL.

private void SendMail(string from, string body) 
{ 
    string mailServerName = "plus.smtp.mail.yahoo.com"; 
    int mailServerPort = 465;
    string toAddress = "[email protected]";
    string subject = "feedback";

    string username = "user";
    string password = "password";

    SmtpClient mailClient = new SmtpClient(mailServerName, 
                                           mailServerPort); 
    mailClient.Host = mailServerName; 
    mailClient.Credentials = new NetworkCredential(username, 
                                                   password);
    mailClient.EnableSsl = true;

    using (MailMessage message = new MailMessage(from, 
                                                 toAddress, 
                                                 subject, 
                                                 body))
        mailClient.Send(message); 
} 
person Matthew Whited    schedule 04.04.2010
comment
имя пользователя и пароль должны быть паролем отправителя? - person aherlambang; 04.04.2010
comment
Я также получил следующую ошибку: существующее соединение было принудительно закрыто удаленным хостом - person aherlambang; 04.04.2010
comment
да, имя пользователя и пароль должны быть такими же, как у отправителя. Имя пользователя может быть вашим адресом электронной почты. Вы также можете попробовать удалить SSL и войти в систему, но это будет зависеть от Yahoo. У меня нет с ними счета, поэтому я не могу проверить его для вас. - person Matthew Whited; 04.04.2010
comment
ну ... это для формы обратной связи ... итак, вы предполагаете, что мне нужно, чтобы пользователь ввел свое имя пользователя и пароль в форму связи? Звучит не очень хорошо ... обычно форма для связи с нами вводит только их адрес электронной почты - person aherlambang; 04.04.2010
comment
Нет, вам просто нужна учетная запись на SMTP-сервере. Вы должны иметь возможность указать любой адрес в строке от. (Обычно адрес отправителя и учетная запись smtp одинаковы, если только вы не используете SMTP в качестве ретранслятора, как вы описали.) Тем не менее, вам может потребоваться проверить в Yahoo. Иногда в пользовательском соглашении / политике говорится, что вы будете использовать их серверы только для личной электронной почты. - person Matthew Whited; 05.04.2010

Вам нужно использовать SMTP-сервер, похоже, вы используете POP3-сервер.

person Fogh    schedule 04.04.2010

Чтобы отправлять электронную почту с помощью почтовых серверов Yahoo, вам необходимо установить EnableSSL = true на вашем экземпляре SmtpClient.

Вам также необходимо использовать правильный порт - 465.

На этом сайте есть много руководств, в которых действительно рассказывается, как использовать пространство имен System.Net.Mail:

person rtpHarry    schedule 04.04.2010