5

현재 특정 보낸 사람의 모든 보내는 메일의 일부 헤더를 바꾸기 위해 Exchange 2007 전송 에이전트를 작성하고 있습니다. 나는 'From'SMTP 헤더를 성공적으로 대체 할 수 있었지만 'Return-Path'헤더를 다시 작성하는 것은 효과가없는 것 같습니다. Exchange 2007 전송 에이전트로 SMTP 헤더 편집

이 모두 일어날 수 있도록하기 위해, 나는 사용자 정의 SmtpReceiveAgent을 작성하고이 같은 OnEndOfData 이벤트에 가입 한 :

private static void MyAgent_OnEndOfData(ReceiveMessageEventSource source, EndOfDataEventArgs e) 
     { 

      try 
      { 
       var address = e.MailItem.Message.From.SmtpAddress; 
       if (address.ToLower().EndsWith("[internal email domain]")) 
       { 
        // replace the From: header - WORKING FINE! 
        e.MailItem.Message.From = new EmailRecipient("[displayname]", 
                   "[email address]"); 

        // replace the Return-Path: header - NOT WORKING! 
        var headerList = e.MailItem.Message.RootPart.Headers; 
        var header = (AddressHeader)headerList.FindFirst("Return-Path"); 
        var newheader = new AddressHeader("Return-Path") { Value = "[email address" }; 
        headerList.ReplaceChild(newheader, header); 
       } 
      } 
      catch (Exception ex) 
      { 
       // do something useful here 
      } 

     } 

답변

4

RFC별로 Return-Path 헤더는받는 사람의 SMTP 서버에서 설정해야합니다. 전자 메일에 Return-Path 헤더가 있으면 제거하고받는 사람의 서버에서 다시 설정해야합니다.

아마도 당신이보고있는 것은 RFC의 올바른 구현입니다.

1

잘 모르겠어요,하지만 "이 변경 될 수도 있습니다처럼 소리 reply-to "헤더가 아니라"return-path ". "return-path"는 서버가 설정합니다.

+0

실제로 리턴 경로 헤더를 변경하려고합니다. 나는 서버의 기본 동작을 재정의 할 방법을 찾고있다. 나는 또한 수송 규칙을 보았다. 그러나 그들은 나를 도울 수 없었다. –