Отправка электронной почты с помощью .NET - PullRequest
0 голосов
/ 31 июля 2009

У меня есть следующий код, но я получаю исключение, что хост SMTP не определен. Если я запускаю это и тестирую на своем локальном компьютере из Visual Studio, что мне нужно сделать, чтобы иметь возможность отправлять электронную почту с моего компьютера. Нужно ли включать какой-либо сервис Windows?

private void SendMailToAdminToApprove(string email_, string name_)
{
    MailMessage msg = new MailMessage();
    msg.From = new MailAddress("address@domain.com", "Person's Name");
    msg.To.Add(new MailAddress("a@gmail.com", "Adam"));
    msg.Subject    = "Message Subject";
    msg.Body       = "Mail body content";
    msg.IsBodyHtml = true;
    msg.Priority   = MailPriority.High;
    try
    {
        SmtpClient c = new SmtpClient();
        c.Send(msg);
    }
    catch (Exception ex)
    {
        Console.Write("T");
    }
}

Ответы [ 5 ]

8 голосов
/ 31 июля 2009

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

редактировать

Как упоминали pcampbell и Skeolan, фактическое значение должно быть указано в app.config. Я не уверен, что localhost будет исключением: это будет зависеть от того, хотите ли вы не запускать локальный сервер.

7 голосов
/ 31 июля 2009

Вам нужно указать SMTP-хост здесь:

string smtpHost = "localhost";
//or go to your config file
smtpHost = ConfigurationManager.AppSettings["MySmtpHost"].ToString();

SmtpClient c = new SmtpClient(smtpHost);
1 голос
/ 31 июля 2009

Вы должны изменить этот раздел:

 SmtpClient c = new SmtpClient();
 // Either specify a SMTP server above, or set c.Host
 c.Send(msg);

Необходимо указать, какой SMTP-сервер будет использоваться для отправки этого сообщения. Если вы устанавливаете SMTP-сервер локально, это может быть localhost, но в противном случае вам необходимо правильно настроить сервер исходящей почты.

1 голос
/ 31 июля 2009

Необходимо определить SMTP-реле:

SmtpClient c = new SmtpClient("relay.yourdomain.com");

или если вы используете реле локально:

SmtpClient c = new SmtpClient("localhost");
0 голосов
/ 31 июля 2009

Вот код, который я использую для отправки электронной почты с C #. Я также закомментировал код для локальной отправки в файл, если он вам нужен.

        SmtpClient smtp = new SmtpClient(smtpServer, portNumber);
        // Disable SSL when saving to directory.
        smtp.EnableSsl = true;
        smtp.Credentials = new NetworkCredential(mailFrom, password);

        // Set mail to be delivered to a folder
        //smtp.PickupDirectoryLocation = @"C:\mail\Send";
        //smtp.DeliveryMethod = SmtpDeliveryMethod.SpecifiedPickupDirectory;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...