我正在尝试使用 .Net 提取电子邮件的主题和正文。除了 text/html MessagePart 之外,它似乎一切正常。我不确定编码等 - 有没有人可以正常工作?尝试转换时它对我来说出错了。
这是 text/html 正文数据的原始字符串
“PGRpdiBkaXI9Imx0ciI-dGV4dCBpbiBoZXJlPGJyPjwvZGl2Pg0K”
这会引发错误。
“输入不是有效的 Base-64 字符串,因为它包含非 Base-64 字符、两个以上的填充字符或填充字符中的非法字符。”
这是代码:
UsersResource.MessagesResource.GetRequest gr = gs.Users.Messages.Get(userEmail, TextBox1.Text);
gr.Format = UsersResource.MessagesResource.GetRequest.FormatEnum.Full;
Message m = gr.Execute();
foreach (MessagePart p in m.Payload.Parts)
{
if (p.MimeType == "text/html")
{
try
{
byte[] data = Convert.FromBase64String(p.Body.Data);
string decodedString = Encoding.UTF8.GetString(data);
Response.Write(decodedString);
}
catch (Exception ex) { }
}
}
我解码错了???
感谢您的帮助。
最佳答案
正文数据似乎是 base64url 编码的,而不是 base64 编码的。
不同之处在于在 64 个字符的编码字母表中使用 - 和 _,而不是 + 和/。
一种解决方案是在调用 FromBase64String 之前分别用 + 和/替换所有 - 和 _ 字符。
见 http://tools.ietf.org/html/rfc4648#section-5
关于gmail-api - 无法阅读文本/html 消息部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24464866/