Modification d'un en-tête SMTP avec Exchange 2007 Agent de transport
-
16-09-2019 - |
Question
Je suis en train d'écrire un agent de transport Exchange 2007 pour remplacer certains en-têtes dans tous les mails sortants d'un expéditeur. J'ai réussi à remplacer le « De » en-tête SMTP avec succès, mais la réécriture en-tête du « Return-Path » ne semble pas fonctionner.
Pour que cela soit tout cela, je l'ai écrit une coutume SmtpReceiveAgent et abonnez-vous à l'événement OnEndOfData comme ceci:
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
}
}
La solution
Par RFCs, l'en-tête Return-Path est censé être réglé par le serveur SMTP du destinataire. Si un en-tête Return-Path existe dans l'e-mail, il doit être retiré et remis à zéro par le serveur du destinataire.
Peut-être ce que vous voyez, est la mise en œuvre correcte des RFCs.
Autres conseils
Je ne suis pas sûr, mais il semble que vous voudrez peut-être changer la « réponse à » en-tête et non pas « return-path ». « Return-path » est destiné à être fixé par le serveur.