2016-06-09 3 views
0

메일 그룹으로 전자 메일을 보내고 특히받는 사람에게 전자 메일을 보내고 싶습니다. 의미 : '받는 사람'입력란에 그룹의 이름이 아닌 이메일 주소 만 볼 수있게하고 싶습니다.Exchange - 메일 그룹 분할

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 
     } 
    } 

또한, 당신은 여전히, 내가 찾는 고생하고

+0

내가 이미 그룹받는 사람의 정보를 가지고 .. 하나의 메일을 사용하고 요구 사항이 무엇인지 확실하지 ... 숨은 참조 필드에 이메일 주소를 유지할 수 있습니다 그룹 이름 대신 메일 개체에 설정하는 방법 –

+0

@ david-gidony 사용중인 샘플 코드 스 니펫을 공유 할 수 있습니까 ?? –

+0

당신이 물어 보았던 것처럼 코드를 공유했습니다. 내가하고 싶은 것은 메일 그룹 이름을 지우고 전자 메일을 개별 수신자에게 보낸 것이지 그룹이 아닌 것입니다. –

관련 문제