GMail SMTP返回不同的正文内容
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了GMail SMTP返回不同的正文内容相关的知识,希望对你有一定的参考价值。
我正在提取这样的电子邮件:
private static SmtpClient client = null;
client = new SmtpClient();
client.UseDefaultCredentials = false;
client.Host = "smtp.gmail.com";
client.Port = 587;
client.EnableSsl = true;
client.DeliveryMethod = SmtpDeliveryMethod.Network;
client.Credentials = new NetworkCredential(email, password);
client.Timeout = 20000;
IEnumerable<uint> uids = client.Search(SearchCondition.Unseen());
然后迭代uids,并为每个:
MailMessage m = client.GetMessage(msgUID, FetchOptions.Normal);
client.SetMessageFlags(msgUID, null, MessageFlag.Seen);
string date = ((DateTime)m.Date()).ToString("g");
string body = m.Body;
我的问题是,邮件正文不是实际电子邮件中显示的正文,它是完全不同的(以及未出现在电子邮件中的正文)。
我想也许电子邮件的正文是动态提取的,当你在浏览器中打开gmail消息时替换内容。我取的身体似乎没有任何html或js。
我会提到,如果我将此电子邮件转发给自己,并处理该电子邮件,那么正文的内容确实是我想要的内容。
可以吗?我如何发现这是否真的是原因,如果是这样,我如何解决问题以检索身体的实际文本?
编辑:当检查调试器中的MailMessage对象时,我可以看到它具有Count 1的“AlternateView”,不确定这是否意味着除了我提取的内容之外还有一个视图总数或一个视图。我在调试树中看不到任何内容。
答案
事实上,电子邮件确实包含一个备用视图,其中包含我想要的内容。解决方案可在以下链接Retrieving AlternateView's of email中找到
以上是关于GMail SMTP返回不同的正文内容的主要内容,如果未能解决你的问题,请参考以下文章
为啥 smtp.gmail.com 返回 Unrecognized 命令?
使用 Gmail API 发送电子邮件,在正文中编码希腊字符
为啥编码标头内容类型:text/html;在 Outlook 插件中使用 MailItem 时缺少 GMAIL 的 SMTP 服务器:SMTP.GMAIL.COM?