Как отправить электронную почту через сервер обмена без использования SMTP? - PullRequest
11 голосов
/ 28 августа 2009

Я пытаюсь отправить электронное письмо с кодом C # через сервер обмена нашей компании.

System.Net.Mail.SmtpClient client = new System.Net.Mail.SmtpClient("exchangebox1.mycompany.com");
System.Net.Mail.MailMessage msg = new System.Net.Mail.MailMessage("Me@myCompany.com",
                "Them@mycompany.com",
                "title here",
                "body here");
            client.Send(msg);

Когда я запускаю это, я получаю SmptException, говоря: «Сервис недоступен, закрытие канала передачи. Ответ сервера: 4.3.2 Сервис недоступен, закрытие канала передачи».

Я интерпретирую это как означающее, что SMTP не включен в нашей коробке обмена и что мне нужно использовать собственные команды Exchange Server для отправки почты. Это правильно, или SMTP должен работать всегда?

Кроме того, возможно ли, что сервер обмена мог быть настроен так, чтобы только определенные компьютеры / пользователи могли отправлять основные через SMTP?

Как я могу отправлять почту через Exchange Server без использования SMTP?

Спасибо.

Ответы [ 4 ]

7 голосов
/ 28 августа 2009

Вы можете использовать Почтовый сервер WCF Exchange Server Пример реализации Здесь

В частности, об отправке сообщений написано

Когда приложение отправляет сообщение, он вызывает метод Send на текущий выходной канал, который должен быть открыть. Выходной канал сериализуется сообщение в строку и создает сообщение в папке «Черновики». Это устанавливает соответствующие значения в поля электронной почты. Когда сообщение имеет был создан, он перемещен в Исходящие. Это происходит через CEMAPI на устройство или через Exchange Web Услуги на рабочем столе. На устройства, сообщения в папке «Исходящие» синхронизируется с другими исходящими сообщения, как определено ActiveSync.

4 голосов
/ 27 мая 2011

Вы можете использовать новый Exchange Web Services Managed API 1.0. кажется, это лучшее решение. вот ссылка.

http://msdn.microsoft.com/en-us/library/dd637749(v=exchg.80).aspx
https://blogs.technet.com/b/exchange/archive/2009/04/21/3407328.aspx
Принять также примет списки рассылки.

Версия API 2.0
http://msdn.microsoft.com/en-us/library/office/dd633709.aspx

3 голосов
/ 28 августа 2009

Попробуйте добавить эти две строки перед отправкой:

client.UseDefaultCredentials = true;
client.EnableSsl = true;

Скорее всего, это проблема, связанная с отсутствием учетных данных, поэтому я немного обманываю из Google ...
С dailycode.net

0 голосов
/ 05 января 2018

Я знаю, что это старая ветка, но для полноты вы должны рассмотреть пакет nuget Microsoft Exchange WebServices :

https://www.nuget.org/packages/Microsoft.Exchange.WebServices

ExchangeService service = new ExchangeService();  
service.AutodiscoverUrl("youremailaddress@yourdomain.com");  

EmailMessage message = new EmailMessage(service);  
message.Subject = "my subject";  
message.Body = "my body";  
message.ToRecipients.Add("my_target@example.com");  
message.Save();  

message.SendAndSaveCopy();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...