Attualmente sto scrivendo un agente di trasporto Exchange 2007 per sostituire alcune intestazioni di tutte le email in uscita da un particolare mittente. Sono riuscito a sostituire l'intestazione SMTP 'Da' con successo, ma la riscrittura dell'intestazione 'Return-Path' non sembra funzionare.Modifica di un'intestazione SMTP con un agente di trasporto Exchange 2007
Per rendere 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
}
}
In realtà desidero modificare l'intestazione del percorso di ritorno. Sto cercando un modo per ignorare il comportamento predefinito del server. Ho anche guardato le regole di trasporto, ma non potevano neanche aiutarmi. –