Редактирование заголовка SMTP с помощью транспортного агента Exchange 2007
-
16-09-2019 - |
Вопрос
В настоящее время я пишу транспортный агент Exchange 2007 для замены некоторых заголовков во всех исходящих письмах от определенного отправителя.Мне удалось успешно заменить заголовок SMTP 'From', но перезапись заголовка '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
}
}
Решение
Согласно RFC, заголовок Return-Path должен быть установлен SMTP-сервером получателя.Если в электронном письме существует заголовок Обратного пути, он должен быть удален и сброшен сервером получателя.
Возможно, то, что вы видите, является правильной реализацией RFC.
Другие советы
Я не уверен, но похоже, что вы, возможно, захотите изменить заголовок "reply-to", а не "return-path"."обратный путь" предназначен для установки сервером.