2009-08-28 4 views
11

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

System.Net.Mail.SmtpClient client = new System.Net.Mail.SmtpClient("exchangebox1.mycompany.com"); 
System.Net.Mail.MailMessage msg = new System.Net.Mail.MailMessage("[email protected]", 
       "[email protected]", 
       "title here", 
       "body here"); 
      client.Send(msg); 

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

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

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

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

Спасибо.

+0

У Вас есть переадресация включена в учетной записи, которую вы отправляете по электронной почте? Я думаю, что администратор Exchange должен установить эту учетную запись, чтобы вы могли отправлять электронную почту с этой учетной записью без использования аутентификации. –

+0

Спасибо, я попробую и узнаю. –

ответ

7

Вы можете использовать WCF Exchange Server Mail Transport пример того, как реализовать это Here

В частности относительно отправки сообщения, которые он говорит

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

3

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

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

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

+0

Спасибо за помощь. Боюсь, у меня такое же исключение. –

4

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

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

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

+0

«Эта тема больше не доступна», поэтому не ходите туда! – CSharper

+0

Просто небольшая ссылка гниения. Я заменил альтернативу и добавил ссылку на версию API 2.0. – EBarr

0

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

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

ExchangeService service = new ExchangeService(); 
service.AutodiscoverUrl("[email protected]"); 

EmailMessage message = new EmailMessage(service); 
message.Subject = "my subject"; 
message.Body = "my body"; 
message.ToRecipients.Add("[email protected]"); 
message.Save(); 

message.SendAndSaveCopy(); 
Смежные вопросы