System.Net.Mail.SmtpClient не будет легко проходить аутентификацию с Exchange, если вы не создадите соединитель, чтобы разрешить открытое реле на сервере Exchange.Вы можете ограничить его только ip отправляющего сервера.Однако для отправки почты через Exchange вы найдете следующую EWS dll как лучшее общее решение.Это так же просто, как ваш код сейчас, но лучше работает для Exchange.
Вы можете попробовать веб-службы Microsoft Exchange, используя следующую dll.
https://www.microsoft.com/en-us/download/details.aspx?id=42951
Объект довольно прост и сопоставим с использованием System.Net.Mail.
Вот пример, который я изменил из примера MSDN.
using Microsoft.Exchange.WebServices.Data;
protected void EmailEws()
{
ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2007_SP1);
service.Credentials = new WebCredentials("user", "password", "domain(local)");
service.TraceEnabled = true;
service.TraceFlags = TraceFlags.All;
// EWS service url.
service.Url = new Uri("https://example.com/EWS/Exchange.asmx");
EmailMessage email = new EmailMessage(service);
email.ToRecipients.Add("a@b.com");
email.Subject = "HelloWorld";
email.Body = new MessageBody("<p>This is the first email I've sent by using the EWS Managed API!</p>");
// set Body before BodyType or an error is raised!
email.Body.BodyType = BodyType.HTML;
email.SendAndSaveCopy();
}
URL-адрес EWS может быть немного запутанным.Это также зависит от того, есть ли у вас доступ к серверу Exchange.Вот некоторая помощь.
https://msdn.microsoft.com/en-us/library/office/dn509511(v=exchg.150).aspx
Полезно, если у вас нет доступа к серверу Exchange.http://nuanceimaging.custhelp.com/app/answers/detail/a_id/13098/~/determining-the-exchange-web-services-(ews)-url-for-the-sharescan-exchange
Изменить последнюю часть на Exchange.asmx, а не Services.wsdl