C # как отправить письмо? - PullRequest
3 голосов
/ 17 февраля 2011

Я использую C # .NET 4.0 и хотел бы отправить электронное письмо на адрес с темой и телом, которое будет содержать некоторую информацию из нескольких текстовых полей в моем приложении.

У меня практически нет опыта отправки электронных писем на C #, поэтому любая помощь здесь будет признательна. Все, что я знаю, это то, что вы должны использовать пространство имен System.Net.Mail. Я попробовал этот код, но он выдал исключение "Ошибка отправки почты".

        new SmtpClient("smtp.server.com", 25).Send("test@hotmail.com",
                                       "test@gmail.com",
                                       "subject",
                                       "body");

Что не так с приведенным выше кодом? Кроме того, есть ли лучший способ отправить электронное письмо?

Ответы [ 5 ]

16 голосов
/ 17 февраля 2011

Возможно, ваша аутентификация (учетные данные) или имя сервера / порта неверны.

Попробуйте это:

        MailMessage mailMsg = new MailMessage();
        mailMsg.To.Add("test@hotmail.com");
                    // From
        MailAddress mailAddress = new MailAddress("you@hotmail.com");
        mailMsg.From = mailAddress;

        // Subject and Body
        mailMsg.Subject = "subject";
        mailMsg.Body = "body";

        // Init SmtpClient and send on port 587 in my case. (Usual=port25)
        SmtpClient smtpClient = new SmtpClient("mailserver", 587);
        System.Net.NetworkCredential credentials = 
           new System.Net.NetworkCredential("username", "password");
        smtpClient.Credentials = credentials;

        smtpClient.Send(mailMsg);
8 голосов
/ 17 февраля 2011

вы не можете оставить эту строку:

smtp.server.com

там должно быть имя вашего сервера smtp, обычно что-то вроде mail.yourcompanyname.com или smtp.yourcompanyname.com

2 голосов
/ 17 февраля 2011

Является ли smtp.server.com действительно SMTP-сервером? Вы должны заменить это реальным. Ваш интернет-провайдер, вероятно, предоставит вам один, но, скорее всего, будет ретранслировать только те письма, которые отправляются с адреса, которым владеет ваш провайдер.

1 голос
/ 17 февраля 2011

Я работал с тремя известными интернет-провайдерами для размещения веб-сайтов моего клиента.Все три провайдера дали мне указание использовать localhost в качестве имени сервера smtp.

0 голосов
/ 31 марта 2013

Добавить это:

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