2011-12-27 82 views
1

サーバーにインストールされ、インターネットに接続されているアプリケーションがあります。 Microsoft Outlookもインストールされます。システムは5つの異なる部門からの要求を処理し、各部門は独自の電子メールアドレスを持っています。C#を使用してOutlookの送信者を変更する

このコードは、Microsoft Outlook Send and Email Automation C#です。Outlookを使用して電子メールを送信する方法はわかりましたが、私が直面している問題は電子メールの送信者を変更することです。 C#から送信する必要がある部門ごとにOutlookの構成を設定するにはどうすればよいですか?ログインしたユーザーなどを変更する方法はありますか?

+0

あなたは見通しの道に行きたくないかもしれません。 SMTPを使用するだけで、移植、使用、管理がより簡単になります。 – CodingBarfield

答えて

2

Outlookを使用してExchangeサーバーに接続している場合は、Exchange Web Services Managed API(特にEmailMessageクラス)を使用して、サーバー上でOutlookクライアントを構成することを心配することなく直接Exchangeサーバーに接続できます。

+0

ありがとうございます:) – msytNadeem

0

System.Net.Mail namespaceでクラスを使用してSMTPを使用してメールを送信できないのはなぜですか? このようにして、メールを送信する部門に基づいて送信元アドレスを変更することができます。

+0

Outlookアプリケーションを開くInteropの方法は簡単です。しかし、outllokプロファイルはすでに同じようになるので、毎回smtpサーバなどの詳細を設定する必要はありません。 – hustler

+0

mmmm、私はすべてのデータを私の見通しにsotredしたいので、これを使用したくない – msytNadeem

0

Outlookから第三者にメールを送信する場合は、Outlookでこれらのアカウントを設定する必要があります。

MailItemオブジェクトには、送信者を設定するために使用できる送信者プロパティがあります。このプロパティは実際にはAddressEntryオブジェクトであり、Outlookから取得する必要があります。

MSDN Documentation for AddressEntry objectの他のリソースのセクションでは、その実行方法の例が見つかります。

+0

これは解決策になるかもしれませんが、私は交換の方がはるかに良い解決策を好むです:) – msytNadeem

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); 
       } 
      } 
関連する問題