2009-08-28 178 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 Server命令發送郵件。這是正確的,還是應該SMTP總是工作?

此外,是否有可能將交換服務器配置爲僅允許某些計算機/用戶通過SMTP發送主服務器?

如何在不使用SMTP的情況下通過Exchange Server發送郵件?

謝謝。

+0

你有在您發送電子郵件的賬戶中啓用轉發功能?我認爲這是Exchange管理員需要在該帳戶上設置的內容,以允許您在不使用身份驗證的情況下使用該帳戶發送電子郵件。 – 2009-08-28 15:23:53

+0

謝謝,我會盡力找出答案。 – 2009-08-28 16:02:53

回答

7

您可以使用如何實現WCF Exchange Server Mail Transport 一個例子是Here

具體地就發送消息,它說

當應用程序發送一條消息, 它呼籲 發送方法電流輸出通道,必須打開 。輸出通道將 消息序列化爲字符串,並在草稿文件夾中創建 消息。它 在 電子郵件字段中設置適當的值。當郵件已創建 時,郵件將被移入發件箱 。這發生在通過CEMAPI的 設備上或通過Exchange Web 桌面上的服務。在 設備上,發件箱中的消息是 ,與ActiveSync定義的其他外發 消息同步。

3

嘗試發送之前將這兩行:

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

這是最有可能的一個問題,其中不存在的憑證,所以我會從谷歌騙一點點...
From dailycode.net

+0

感謝您的幫助。恐怕我得到同樣的例外。 – 2009-08-28 15:22:31

4

您可以使用新的Exchange Web服務託管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
的接受將接受分發列表也是如此。

2。0版本的API
http://msdn.microsoft.com/en-us/library/office/dd633709.aspx

+0

「這個題目不再可用」,所以不要去那裏! – CSharper 2013-12-18 12:17:33

+0

只是一個小小的鏈接腐爛。我替換了一個替代品,並添加了一個2.0版API的鏈接。 – EBarr 2014-02-08 02:47:02

0

我知道這是一個古老的線程,但出於完整性,您應該考慮的Microsoft Exchange Web服務 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(); 
相關問題