看起来MailItem.Message.ReplyTo属性是只读的。有人知道在Mailitem.Message中将ReplyTo设置为新地址的方法吗?
使用Exchange 2010传输代理来处理Exchange 2010通讯组的一些dmarc问题。我可以更改发件人标题并发送DG电子邮件,但如果可以将ReplyTo标题更改为原始电子邮件地址,我们的收件人将能够直接回复,而不必将我添加的原始电子邮件地址复制并粘贴到电子邮件正文中。
试试这样的东西(没有测试,只是我的想法!):
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 { }
}
即使这个问题已经存在2年多了,我也会发布我的解决方案(因为我自己也有同样的问题)。也许这对有同样问题的人有帮助。
MailItem.Message.ReplyTo
是只读的,这是正确的,但这只是因为它是Microsoft.Exchange.Data.Transport.Email.EmailRecipient
类型的集合。
您可以使用remove/clear和add方法修改集合。使用此示例删除现有的回复地址并添加一个新地址:
e.MailItem.Message.ReplyTo.Clear();
e.MailItem.Message.ReplyTo.Add("reply-to@address.com");