Modifica di un intestazione SMTP con un Exchange 2007 Transport Agent
-
16-09-2019 - |
Domanda
Al momento sto scrivendo un Transport Agent di Exchange 2007 per sostituire alcune intestazioni di tutte le mail in uscita da un particolare mittente. Sono riuscito a sostituire il 'From' intestazione SMTP con successo, ma riscrivere l'intestazione 'Return-Path' non sembra funzionare.
Per fare tutto questo accada, ho scritto una consuetudine SmtpReceiveAgent e sottoscrivere l'evento OnEndOfData in questo modo:
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
}
}
Soluzione
Per le RFC, l'intestazione Return-Path dovrebbe essere impostato dal server SMTP del destinatario. Se un'intestazione Return-Path esiste nella e-mail, si deve essere rimosso, e reimpostare dal server del destinatario.
Forse quello che state vedendo, è la corretta attuazione degli RFC.
Altri suggerimenti
Non sono sicuro, ma suona come si potrebbe desiderare di essere cambiare il "reply-to" e non "Return-Path". "Return-Path" è destinato a essere impostato dal server.