2009-08-28 11 views
11

Próbuję wysłać wiadomość e-mail z kodu C# za pośrednictwem serwera wymiany naszej firmy.Jak wysłać wiadomość e-mail przez serwer wymiany bez użycia 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); 

Kiedy uruchamiam to mam SmptException mówiąc: „Usługa niedostępna, zamykanie kanału transmisyjnego. Odpowiedź serwera było 4.3.2 Usługa niedostępna, zamykanie kanału transmisyjnego”.

Rozumiem, że oznacza to, że SMTP nie jest włączone w naszym oknie wymiany i że muszę użyć macierzystych poleceń serwera Exchange do wysłania wiadomości. Czy to prawda, czy SMTP zawsze powinien działać?

Dodatkowo, czy serwer wymiany mógł być skonfigurowany tak, aby zezwalał tylko określonym komputerom/użytkownikom na wysyłanie wiadomości głównej przez SMTP?

Jak mogę wysłać pocztę przez serwer Exchange bez używania SMTP?

Dzięki.

+0

masz przekierowanie włączone na koncie, że wysyłasz wiadomość e-mail jako? Myślę, że jest to coś, co administrator Exchange musi ustawić na tym koncie, aby umożliwić wysyłanie wiadomości e-mail z tym kontem bez korzystania z uwierzytelniania. –

+0

Dzięki, spróbuję się dowiedzieć. –

Odpowiedz

7

Można użyć WCF Exchange Server Mail Transport przykład jak zaimplementować to Here

szczególności dotyczące wysyłania wiadomości mówi

Gdy aplikacja wysyła wiadomość, wywołuje Send metody na bieżący kanał wyjściowy, który musi być otwarty . Kanał wyjściowy serializuje wiadomość do ciągu i tworzy wiadomość w folderze Wersje robocze. To ustawia odpowiednie wartości w polach e-mail . Po utworzeniu wiadomości zostaje przeniesiona do skrzynki nadawczej . Dzieje się tak poprzez CEMAPI na urządzeniu lub za pośrednictwem usługi Exchange Web na pulpicie. Na urządzeniu wiadomości w skrzynce nadawczej są synchronizowane z innymi wychodzącymi wiadomościami , zgodnie z definicją ActiveSync.

3

spróbuj dodać te dwie linie przed wysłaniem:

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

Jest to najprawdopodobniej problem z faktem, iż nie poświadczeń więc będę oszukiwać trochę od Google ...
From dailycode.net

+0

Dzięki za pomoc. Obawiam się, że mam ten sam wyjątek. –

4

Możesz użyć nowego interfejsu API zarządzanych usług internetowych Exchange 1.0. wydaje się być najlepszym rozwiązaniem. Oto link.

http://msdn.microsoft.com/en-us/library/dd637749(v=exchg.80).aspx
https://blogs.technet.com/b/exchange/archive/2009/04/21/3407328.aspx
przyjęć zaakceptuje list dystrybucyjnych, jak również.

The 2.0 wersja API
http://msdn.microsoft.com/en-us/library/office/dd633709.aspx

+0

"Ten temat nie jest już dostępny", więc nie idź tam! – CSharper

+0

Tylko trochę zgniłe ogniwo. Zastąpiłem alternatywę i dodałem link do wersji 2.0 interfejsu API. – EBarr

0

Wiem, że to stary wątek, ale pod względem kompletności, należy wziąć pod uwagę Microsoft Exchange WebServices Nuget pakiet:

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("my_target[email protected]"); 
message.Save(); 

message.SendAndSaveCopy(); 
Powiązane problemy