Я пишу приложение Windows для форм на основе C# и EWS Managed API 2.2.0 (сборка Microsoft.Exchange.WebServices.dll) для клиента мой, который работает в компании.
Логика приложения c проста: мой клиент вводит свой адрес электронной почты "sender@ABC.domain.com" и адрес электронной почты получателя "recipient@contoso.com" и приложение отправляет получателю HTML электронное письмо.
Приложение должно подключиться к серверу Exchange компании моего клиента, аутентифицировать моего клиента для Обмен как пользователя домена Windows (с использованием аутентификации домена Windows) (клиент уже вошел в систему Windows со своим именем пользователя "отправитель" и как Windows пользователь делает запрос), а затем, send Электронная почта через его почтовый ящик "sender@ABC.domain.com".
Пока я написал приведенный выше код, который кажется правильным, но он выдает мне эту ошибку: "Запрос не выполнен. Удаленный сервер возвратил ошибку: (407). Требуется проверка подлинности прокси-сервера "
try{
//Initialize and bound 'service' to the latest known version of Exchange
ExchangeService service = new ExchangeService();
//Use the Windows logged-in user domain account credentials:
//Is this correct / is this enough???
service.UseDefaultCredentials = true;
ServicePointManager.ServerCertificateValidationCallback = myValidationCallBackFunction;
service.AutodiscoverUrl("sender@ABC.domain.com", myRedirectionCallback);
MessageBox.Show("Autodiscover Exchange URL found:" + service.Url.ToString());
//Impersonation test - just in case - but this is not make any difference in the error
service.ImpersonatedUserId = new ImpersonatedUserId(ConnectingIdType.SmtpAddress, "sender@ABC.domain.com");
//Initialize and set an EmailMessage
EmailMessage message = new EmailMessage(service);
message.Subject = "HelloWorld";
string emailMessageBody = "<!DOCTYPE html><html> ... </html>";
message.Body = new MessageBody(BodyType.HTML, emailMessageBody);
email.ToRecipients.Add("recipient@contoso.com");
message.SendAndSaveCopy();
MessageBox.Show("E-Mail sent successfully");
}
catch (Exception ex)
{
MessageBox.Show("Error: " + ex.Message);
}
Мой клиент использует Windows 10. Его P C является частью домена Windows с URL "XYZ.domain.com", а его имя пользователя на Windows - "отправитель". У него также есть приложение Outlook, установленное в его P C, которое прекрасно подключается к Exchange Server в сети его компании ...
Я полностью любитель Windows учетных записей / аутентификации домена. Это проблема Windows проверки подлинности домена? Это проблема с настройками соединения Exchange? Или проблема в моем коде в разделе аутентификации (нужно ли добавить что-то еще)?