2011-12-27 59 views
1

我有一個將安裝在服務器上的應用程序,它連接到互聯網。 Microsoft Outlook也將被安裝。系統將處理來自5個不同部門的請求,每個部門都有自己的電子郵件地址。使用C#在outlook中更改發件人

我看過這段代碼,Microsoft Outlook Send and Email Automation C#所以我知道如何使用Outlook發送電子郵件,但是我面臨的問題是更改電子郵件的發件人。如何爲每個需要從C#發送的部門設置Outlook的配置?有沒有辦法改變用戶登錄或什麼?

+0

你可能不想走前景。只需使用SMTP將更易於移植,使用和管理。 – CodingBarfield 2011-12-27 10:56:34

回答

2

如果您使用Outlook連接到Exchange服務器,則可以使用Exchange Web Services Managed API(尤其是EmailMessage類)直接連接到Exchange服務器,而無需擔心在服務器上配置Outlook客戶端。

+0

謝謝你的工作:) – msytNadeem 2011-12-27 13:05:20

0

爲什麼不能使用System.Net.Mail namespace中的類來使用SMTP發送電子郵件。 這樣你就可以根據代表你發送郵件的部門更改發件人地址

+0

Interop打開Outlook應用程序的方式不是微不足道的。但是,您不需要像每次配置smtp服務器等細節一樣,因爲outllok配置文件已經具有相同的功能。 – hustler 2011-12-27 10:34:42

+0

mmmm,我不想使用這個,因爲我希望所有的數據都可以在我的outlook中得到解決 – msytNadeem 2011-12-27 13:05:47

0

如果你想代表第三方從Outlook發送郵件,我認爲你必須在Outlook中配置這些帳號。

MailItem對象具有可用於設置發件人的發件人屬性。該屬性實際上是一個AddressEntry對象,您需要從Outlook中進行檢索。

MSDN Documentation for AddressEntry object中,您可以找到有關如何在其他資源部分執行此操作的示例。

+0

這可能是一個解決方案,但我更喜歡交換解決方案,好多了,謝謝:) – msytNadeem 2011-12-27 13:06:28

0

Outlook有一個屬性,您可以在其中獲取映射到它的帳戶列表。根據您的配置,您可以拿起電子郵件發件人併發送電子郵件。

Microsoft.Office.Interop.Outlook.Accounts accounts = oMsg.Session.Accounts;     
for (int i = 1; i <= accounts.Count; i++) 
      { 
       string accountfound = accounts[i].DisplayName.ToLower(); 
       if (accountname.ToLower() == accountfound) 
       { 

        found = true; 
        oMsg.SendUsingAccount = accounts[i]; 
        Microsoft.Office.Interop.Outlook.Recipient recipient = oMsg.Session.CreateRecipient(accountfound); 
       } 
      } 
相關問題