Отправка почты с использованием localhost SMTP - PullRequest
23 голосов
/ 13 октября 2009

Я пытаюсь настроить SMTP-сервер на IIS для отправки почты. Сервер SMTP предназначен для использования кодом ASP.NET в C #.

Ранее я использовал gmail smtp, в котором в качестве хоста я предоставил smtp.gmail.com с защищенным портом и моим umail / pwd для gmail. Это работало нормально. Вот код, используемый для этого.

SmtpClient smtpClient = new SmtpClient();
smtpClient.UseDefaultCredentials = false;
smtpClient.Host = "smtp.gmail.com";
smtpClient.Port = 587;
smtpClient.Credentials = new NetworkCredential(uname,pwd);
smtpClient.EnableSsl = true;
smtpClient.Send(mailMessage);

Теперь я планирую использовать SMTP-сервер localhost на IIS, какие значения я должен дать для параметров UseDefaultCredentials и Credentials. Я назначу false для EnableSsl, так как он работает через порт 25.

Кроме того, что может быть самой простой конфигурацией виртуального SMTP-сервера.

Ответы [ 6 ]

27 голосов
/ 13 октября 2009

Когда вы используете локальную службу IIS SMTP, установите для DeliveryMethod значение PickupDirectoryFromIis. Например:

  smtpClient.DeliveryMethod = SmtpDeliveryMethod.PickupDirectoryFromIis;

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

Когда вы используете вышеуказанный код, это означает, что вы можете избавиться от этой части вашего кода:

smtpClient.UseDefaultCredentials = false;
smtpClient.Host = "smtp.gmail.com";
smtpClient.Port = 587;
smtpClient.Credentials = new NetworkCredential(uname,pwd);
smtpClient.EnableSsl = true;
15 голосов
/ 13 октября 2009

Я думаю, что в localhost вы можете использовать:

SmtpClient smtpClient = new SmtpClient();
smtpClient.UseDefaultCredentials = true;
smtpClient.Send(mailMessage);
3 голосов
/ 13 октября 2009

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

2 голосов
/ 11 июня 2014

Вы пытались включить реле?

Найти диспетчер IIS6 (я обнаружил, что поиск IIS может вернуть 2 результата), перейдите в свойства сервера SMTP, затем «Доступ», а затем нажмите кнопку реле.

Затем вы можете выбрать все или разрешить только определенные IP-адреса, такие как 127.0.0.1

SMTP Relay

1 голос
/ 14 ноября 2009

Tx Натим, то, что вы говорите, сработало для меня. Получите наше приложение для внутренней сети, используя интегрированную аутентификацию с нашим сервером Exchange 2007:

Dim msg As New MailMessage()
Dim smtp As SmtpClient

msg.From = New MailAddress(strFrom)
msg.To.Add(strTo)
msg.Subject = strSubject
msg.Body = strBody

smtp = New SmtpClient("ServerName")
smtp.UseDefaultCredentials = True
smtp.Send(msg) 
0 голосов
/ 14 января 2016

Если вы хотите проверить электронную почту на локальном хосте, просто скачайте установить инструмент papercut https://papercut.codeplex.com/

и измените имя хоста на localhost, как показано ниже. Papercut фиксирует все электронные письма, отправленные с использованием localhost.

  smtpClient.UseDefaultCredentials = false;
    smtpClient.Host = "localhost";
    smtpClient.Port = 587;
    smtpClient.Credentials = new NetworkCredential(uname,pwd);
    smtpClient.EnableSsl = true;
...