Подтвердить что ты не робот

Отправить почту с помощью localhost SMTP

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

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

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.

4b9b3361

Ответ 1

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

SmtpClient smtpClient = new SmtpClient();
smtpClient.UseDefaultCredentials = true;
smtpClient.Send(mailMessage);

Ответ 2

Когда вы используете локальную службу SMTP IIS, установите 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;

Ответ 3

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

Ответ 4

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

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

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

SMTP Relay

Ответ 5

Tx Natim, вы сказали, что работали для меня. Попросите наше приложение для интрасети использовать интегрированный auth с нашим сервером 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) 

Ответ 6

Если вы хотите протестировать электронную почту в localhost, просто скачайте программу 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;