2016-06-09 54 views
0

我想發送電子郵件到通訊組,並確保收件人將收到的電子郵件發送給他們。 含義:在「收件人」字段中,我希望他們只能看到他們的電子郵件地址,而不是以粗體字顯示組的名稱。交換 - 拆分通訊組

我正在爲Exchange構建一個主題路由器dll,並且我需要將發送給組的郵件拆分爲單個電子郵件。 我正在使用Exchange 2010. 有什麼想法?

我想要做這樣的事情:

messageEventArgs.MailItem.Message.To = messageEventArgs.MailItem.Recipients 

可惜messageEventArgs.MailItem.Message.To是隻讀...

任何其他的想法?

這裏是要求一些示例代碼:

 void ownRoutingAgent_OnResolvedMessage(ResolvedMessageEventSource source, QueuedMessageEventArgs messageEventArgs) 
{ 
     bool forwardToSeg = false; 

     if (true) EventViewerLogger.WriteInfo("FromAddress: " + messageEventArgs.MailItem.FromAddress.ToString()); 
     if (true) EventViewerLogger.WriteInfo("SecureSenders: " + m_SecureSenderAddress); 

     distGroupList = generateDistGroupList(); 

     // Change origional Sender EMail Address to a random sender from the list of SEG users 
     foreach (string senderAddr in m_SecureSenderAddress.Split(',')) 
     { 
      //Check if sender equals to a secure sender 
      if (senderAddr.ToUpper() == (messageEventArgs.MailItem.FromAddress.ToString().ToUpper())) 
      { 
       Random rnd = new Random(); 
       int numOfUser = rnd.Next(0, senderAddresses.Length); 
       messageEventArgs.MailItem.FromAddress = new RoutingAddress(senderAddresses[numOfUser]); 

       forwardToSeg = true; 

    //Check if recepient is a distrebution group 

       // run over all recipients list 
       //foreach (EnvelopeRecipient recp in messageEventArgs.MailItem.Recipients) 
       //{ 
        // run over excluded members list 
        foreach (MyClass disGrp in distGroupList) 
        { 
         // Checks if Recipients contain an e-mail group), 
         // if yes, does not route to seg. 
         if (messageEventArgs.MailItem.Message.To.ToString().ToUpper() == disGrp.emailAdress.ToUpper()) 
         { 
          messageEventArgs.MailItem.Message.To.Add******* 
           = messageEventArgs.MailItem.Recipients 
          //create a method that extracts group members and saves them in an array 
          //delete group address from mail-recipients 

          //messageEventArgs.MailItem.Recipients; 
          return; 
         } 
        } 
       //} 
      } 
     } 

回答

1

你可以從羣發電子郵件的列表,然後發送郵件。以下代碼片段將獲得單個郵件ID。

string groupName = "somegroup"; 
    string domainName = "somedomain"; 

    using(PrincipalContext ctx = new PrincipalContext(ContextType.Domain, domainName)) 
    { 
     using(GroupPrincipal grp = GroupPrincipal.FindByIdentity(ctx, IdentityType.Name, groupName)) 
     { 
      var sams = from x in grp.GetMembers(true) select new {x.SamAccountName, }; 
      var users = from sam in a.Distinct() 
       let usr = UserPrincipal.FindByIdentity(ctx, IdentityType.SamAccountName, sam) 
       select new { usr.SamAccountName, usr.DisplayName, usr.EmailAddress}; 
      //users is now populated with the e-mail IDs 
     } 
    } 

此外,您還可以使用單個郵件和保持電子郵件地址在BCC場..不知道的要求是什麼..

+0

我已經有一羣收件人的詳細信息,我很困擾找到一種將其設置在郵件對象而不是組名上的方法, –

+0

@ david-gidony您可以分享您正在使用的示例代碼片段嗎? –

+0

我按照你的要求分享了我的代碼,我想要做的就是刪除發行組的名稱,併發送電子郵件,因爲它發送給個人收件人,而不是作爲一個羣體.... –