Редактирование заголовка SMTP с помощью транспортного агента Exchange 2007

В настоящее время я пишу агент транспорта Exchange 2007 для замены некоторых заголовков во всех исходящих письмах от конкретного отправителя. Мне удалось успешно сменить заголовок "From" SMTP, но переписывание заголовка "Return-Path" не работает.

Чтобы все это произошло, я написал пользовательский 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
 }
 }
2 ответа

В RFC, заголовок Return-Path должен быть установлен SMTP-сервером получателя. Если в письме есть заголовок Return-Path, он должен быть удален и reset сервером-получателем.

Возможно, то, что вы видите, является правильной реализацией RFC.


Я не уверен, но похоже, что вы захотите изменить заголовок "reply-to", а не "return-path". "return-path" предназначен для установки сервером.

licensed under cc by-sa 3.0 with attribution.