我写了一封邮件处理程序,它基本上在接收邮件上打了一个模板并转发它。传入邮件转到一个Gmail帐户,我使用POP下载,然后阅读邮件(包括html和纯文本multipart-MIME),根据需要对模板进行任何更改,然后使用相应的plain + html创建一个新邮件文本并将其发送到另一个地址。电子邮件中的奇怪字符
问题是,当邮件到达另一边时,一些邮件已被破坏,奇怪的字符如Ã
和Â
奇迹般地被插入。他们不在原始邮件中,他们不在我的模板中,而且我无法找到任何可预测的模式来显示这些人物出现的时间。我确定这与邮件的编码属性有关,但我确保将外发邮件的charset和传输编码设置为与传入邮件相同。那么我还需要做什么?
编辑:下面是一个收到的邮件的剪断样品:
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: quoted-printable
=0A=0ASafari Special:=0A=0A=A0=0A=0ASafari in Thornybush Priv=
ate Game Reserve 9-12=0AJanuary 2012 (3nights)
处理之后,此出来为:
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable
=0D=0A=0D=0ASafari Special:=0D=0A=0D=0A=C2=A0=0D=0A=0D=0A=
Safari in Thornybush Private Game Reserve 9-12=0D=0AJanuary=
2012 (3nights)
通知的=0D
和=C2
字符的插入(除了从几个=0A
的那不是在原来的)。
那么你认为在这里发生了什么?
另一条线索:这里是我的代码,创建了不同的观点:
var htmlView = AlternateView.CreateAlternateViewFromString(htmlBody, null, "text/html");
htmlView.ContentType.CharSet = charSet;
htmlView.TransferEncoding = transferEncoding;
m.AlternateViews.Add(htmlView);
沿着什么@mjwills建议,也许CreateAlternativeViewFromString()
方法已经假定UTF-8的线,后来将其更改为ISO -8859-1没有什么区别?
这听起来像是一个编码问题。发布您发送的消息以及由此产生的乱码消息的示例。您应该在流程的每个阶段查看邮件的二进制形式。 – Mankarse
@Mankarse - 查看我的编辑 –