2017-06-14 34 views
0

C#とMicrosoft.Office.Interop.OutlookライブラリでEMailを送信したいと思います。ExchangeアカウントでOutlookでメールを送信

私は[email protected]で私のOutlookアカウントにロックインされており、[email protected][email protected]からメールを送信するためのExchangeサーバの権利を持っています。

BまたはCでメールを送信する方法が見つかりません。

メールが[email protected]の私のユーザアカウントではすべて機能しています。

今私は[email protected]のアカウントを取得し、Bの名前でメールを送信する方法を見つけることができません。

私の質問:

他のアカウントにアクセスするにはどうすればよいですか?私が持っているコードだ

using Outlook = Microsoft.Office.Interop.Outlook; 
     public static Outlook.Account GetAccountForEmailAddress(Outlook.Application application, string smtpAddress) 
    { 

     // Loop over the Accounts collection of the current Outlook session. 
     Outlook.Accounts accounts = application.Session.Accounts; 
     if (_IsDebug) 
      Console.WriteLine($"Anzahl Accounts: {accounts.Count}"); 
     foreach (Outlook.Account account in accounts) 
     { 
      // When the e-mail address matches, return the account. 
      if (_IsDebug) 
       Console.WriteLine($"Account: {account.SmtpAddress}"); 
      if (String.Compare(account.SmtpAddress, smtpAddress, true) == 0) 
      { 
       return account; 
      } 
     } 
     throw new System.Exception(string.Format("No Account with SmtpAddress: {0} exists!", smtpAddress)); 
    } 
     static void SendEMail(string emailadress) 
    { 
     try 
     { 
      var outlookApplication = new Outlook.Application(); 
      var outlookMailItem = (Outlook.MailItem)outlookApplication.CreateItem(Outlook.OlItemType.olMailItem); 

      outlookMailItem.SendUsingAccount = GetAccountForEmailAddress(outlookApplication, ConfigurationManager.AppSettings[SENDER]); 


      if (_IsDebug) 
       Console.WriteLine($"Absender: {outlookMailItem?.SendUsingAccount?.SmtpAddress}"); 

      outlookMailItem.HTMLBody = ConfigurationManager.AppSettings[BODY]; 

      if (_IsDebug) 
       Console.WriteLine($"Body: {outlookMailItem?.HTMLBody}"); 

      var file = GetPDFFile(); 
      if (_IsDebug) 
       Console.WriteLine($"File: {file?.Name}"); 

      if (file == null) 
      { 
       Console.WriteLine("Keine Datei gefunden!"); 
       return; 
      } 

      string attachementDisplayName = file.Name; 

      int attachementPosition = outlookMailItem.HTMLBody.Length + 1; 
      int attachementType = (int)Outlook.OlAttachmentType.olByValue; 

      if (_IsDebug) 
       Console.WriteLine($"Dateianhang: {file.FullName}"); 

      Outlook.Attachment outlookAttachement = outlookMailItem.Attachments.Add(file.FullName, attachementType, attachementPosition, attachementDisplayName); 

      outlookMailItem.Subject = ConfigurationManager.AppSettings[SUBJECT]; 

      Outlook.Recipients outlookRecipients = outlookMailItem.Recipients; 
      Outlook.Recipient outlookRecipient = outlookRecipients.Add(emailadress); 

      outlookRecipient.Resolve(); 

      outlookMailItem.Send(); 

      outlookRecipient = null; 
      outlookRecipients = null; 
      outlookMailItem = null; 
      outlookApplication = null; 

      if (_IsDebug) 
       Console.ReadLine(); 
     } 
     catch (Exception) 
     { 
      throw; 
     } 
    } 

答えて

0

あなたはあなたから電子メールを送信するメールボックスの送信者アクセス許可を送信するメールボックスの所有者を付与する必要があります。権限の代わりに送信すると動作しますが、送信者として "Bの代わりに"と表示されます。

+0

私にはコード例がありますか?それを行う方法を理解できません.. – M4s0n

+0

PowerShellを使用することができます:https://msdn.microsoft.com/en-us/library/ff852815(v=exchsrvcs.149).aspx –

関連する問題