Как я могу отправить местную электронную почту, используя обмен с asp.net?
У меня есть проект, который должен отправить уведомление для сотрудников по локальной электронной почте. Я использую класс SmtpClient для отправки электронной почты, но это не сработало! вот код:
MailMessage message = new MailMessage();
message.From = new MailAddress("localmail1@company.com");
message.To.Add(new MailAddress("localmail2@company.com"));
message.Subject = "Sending mail";
message.Body = "Check sending email by Exchange from asp.net code <> ";
SmtpClient client = new SmtpClient("ExchangeDNS", 25);
try
{
client.Send(message);
}
catch (Exception exc)
{
Label1.Text = exc.Message.ToString();
}
Когда я нажимаю кнопки, это дает мне SmtpException
с сообщением: Failure sending mail.
NB: мы используем сервер Exchange.
Как я могу решить это?
3 ответа
Используйте полное имя для вашего сервера, например, exchangeDNS.example.com. Если это не сработает, попробуйте IP-адрес. Вы можете вручную подключиться к порту 25 на сервере Exchange, просто чтобы посмотреть, возможно ли это. Также проверьте, требует ли ваш сервер аутентифицированного или зашифрованного соединения. Если это так, вам нужно будет предоставить учетные данные вместе с запросом или перейти на использование SSL и защищенного порта.
Предполагая, что у вас есть сервер и все необходимые учетные данные правильные (дважды проверьте их), я бы попытался увеличить время ожидания на SMTP-клиенте.
Ваш код в порядке. Подозреваемой является конфигурация вашего сервера Exchange. Некоторые параметры для вашего администратора Exchange:
- Разрешить анонимные SMTP-подключения.
- Белый список IP-адресов, чтобы только ваши веб-серверы могли отправлять почту таким способом.
- Создайте учетную запись Active Directory для веб-сервера, а затем выполните проверку подлинности вашего класса с использованием имени пользователя и пароля.
Если вы опубликуете более подробную информацию о конфигурации Exchange, я могу помочь, рискуя свести этот вопрос к вопросу "не связан с программированием".