2016-06-15 5 views
1

Je crée un agent de routage pour Exchange 2010 en utilisant C# (framework 3.5) J'ai une application tierce qui reçoit emails, et authentifiez les utilisateurs via leur adresse e-mail. Le problème commence lorsque j'ai envoyé un e-mail à un groupe de distribution, le champ «À» est défini sur l'adresse e-mail du groupe D, et il provoque mes problèmes avec l'application tierce.Exchange - agent de routage qui transforme le destinataire du massage par courrier électronique en un seul groupe de distribution en adresses de messagerie unique de ses membres

Comment convertir le champ d'un massage e-mail envoyé à: [email protected]

dans: [email protected]; [email protected], .....

cela fait partie de mon code, j'ai essayé de supprimer le champ "à", mais rien ne semble fonctionner.

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(); 


        //////////////////////////////////////////// 
        //Check if recepient is a distrebution group 

        Random rnd = new Random(); 
        int numOfUser = rnd.Next(0, senderAddresses.Length); 
        messageEventArgs.MailItem.FromAddress = new RoutingAddress(senderAddresses[numOfUser]); 

        // run over all recipients list 
        //foreach (EnvelopeRecipient recp in messageEventArgs.MailItem.Recipients) 
        //{ 
        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[0].NativeAddress.ToString().ToUpper() == disGrp.emailAdress.ToUpper()) 

         { 
          messageEventArgs.MailItem.Message.To[0].NativeAddress.Remove(0); 
          messageEventArgs.MailItem.Message.To.Remove(new EmailRecipient(messageEventArgs.MailItem.Message.To[0].DisplayName.ToString(),messageEventArgs.MailItem.Message.To[0].NativeAddress.ToString())); 

          foreach (EnvelopeRecipient yywx in messageEventArgs.MailItem.Recipients) 
          { 
           //remove group address from mail-recipients 


           // messageEventArgs.MailItem.Message.To.Add******* 
           //  = messageEventArgs.MailItem.Recipients 


           //add all group members to the "TO" field 


           //messageEventArgs.MailItem.Recipients; 

          } 
       } 
      } 

Répondre

0

utiliser la classe AddressBook pour le faire ou élargir les destinataires d'un message dans un agent de transport. si vous voulez développer une liste qui nécessiterait un appel AD qui peut être très coûteux en termes de performances dans un agent de transport.