Ответ 1
Я думаю, что в localhost вы можете использовать:
SmtpClient smtpClient = new SmtpClient();
smtpClient.UseDefaultCredentials = true;
smtpClient.Send(mailMessage);
Я пытаюсь настроить 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.
Я думаю, что в localhost вы можете использовать:
SmtpClient smtpClient = new SmtpClient();
smtpClient.UseDefaultCredentials = true;
smtpClient.Send(mailMessage);
Когда вы используете локальную службу 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;
Это зависит от того, как вы настраиваете SMTP-сервер. Возможно, вам не обязательно использовать какие-либо учетные данные вообще, и просто настройте сервер только для приема локальных подключений.
Вы пытались включить реле?
Найти менеджер IIS6 (я обнаружил, что поиск IIS может вернуть 2 результата) перейдите к свойствам SMTP-сервера, затем нажмите "Access", затем нажмите кнопку реле.
Затем вы можете либо выбрать все, либо разрешить только определенный ip, например 127.0.0.1
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)
Если вы хотите протестировать электронную почту в 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;