Exchange 2010传输代理 - 重写回复标头

时间:2014-10-11 17:19:48

标签: exchange-server mailitem exchange-transport-agents

看起来MailItem.Message.ReplyTo属性是只读的。有人知道在Mailitem.Message中将ReplyTo设置为新地址的方法吗?

使用Exchange 2010传输代理处理Exchange 2010通讯组的某些dmarc问题。我可以更改From标头并发送我们的DG电子邮件,但如果可以将ReplyTo标头发送到原始电子邮件地址,我们的收件人将能够直接回复而不必复制并粘贴原始电子邮件地址我是添加到电子邮件的正文。

2 个答案:

答案 0 :(得分:0)

尝试这样的事情(没有经过测试,只是在我脑海中!):

MimeRecipient mmR = null; 
try { mmR = new MimeRecipient("John Doe", "jdoe@yourdomain.com");} 
catch { }


Header hdrReplyTo = null;
try {hdrReplyTo = Hdrs.FindFirst(HeaderId.ReplyTo);} 
catch {}
if (null != hdrReplyTo)
{
    try 
    {
        MimeNode.Enumerator<MimeNode> enum1 = hdrReplyTo.GetEnumerator();
        try { enum1.MoveNext(); } 
        catch { }
        if (null != enum1.Current)
        { 
            try 
            {
                //delete old Reply-To               
                Hdrs.RemoveAll(HeaderId.From);
                //change From header
                hdrReplyTo.RemoveAll(); 
                hdrReplyTo.AppendChild(mmR);
                //create a new one
                Hdrs.AppendChild(hdrReplyTo); 
            } 
            catch { }
        }
    } 
    catch { }
}

答案 1 :(得分:0)

即使这个问题已经超过2年了,我也会发布我的解决方案(因为我自己也有同样的问题)。也许它可以帮助那些有同样问题的人。

MailItem.Message.ReplyTo是只读的,这是正确的,但只是因为它是Microsoft.Exchange.Data.Transport.Email.EmailRecipient类型的集合。

您可以使用remove / clear和添加方法修改集合。使用此示例删除现有的回复地址并添加新地址:

e.MailItem.Message.ReplyTo.Clear();
e.MailItem.Message.ReplyTo.Add("reply-to@address.com");