使用MimeKit解析Gmail API返回内容时始终为空的问题排查
问题:Gmail API获取的邮件MIME内容无法用MimeKit解析
我正在调用Gmail API端点:https://gmail.googleapis.com/gmail/v1/users/me/messages/[id] 获取邮件消息(其中[id]为目标消息ID)。OAuth验证及API调用均正常,能在应用中成功展示邮件主题、摘要等基础信息,但无法正常解析邮件正文的MIME数据。
我使用MimeKit处理MIME内容,参考其相关文档实现了代码,但尝试了三种消息处理策略后,MimeMessage的数据结构始终为空,推测内容未被正确解析。
代码示例
public static string ParseMessage(string content) { // 'content' 是Gmail API返回的JSON字符串 JsonNode jsonObject = JsonNode.Parse(content); // ... 这里解析其他字段都正常 ... // 解析MIME内容的部分无法正常工作... string payload = jsonObject["payload"].ToJsonString(); string body = ParseMime(payload); // ... 其他逻辑 ... } public static string ParseMime(string content) { MemoryStream stream = new MemoryStream(Encoding.UTF8.GetBytes(content)); MimeMessage message = MimeMessage.Load(stream); // 这里是参考消息处理文档实现的逻辑 ... }
疑问
- 传入
MimeMessage.Load()的内容是否正确?根据Gmail API的方法文档及响应资源文档,我认为响应中payload属性的JSON对象是MIME部分树的根节点,但解析后MimeMessage为空。 - 在解析邮件MIME内容前,是否遗漏了编码/解码或其他预处理步骤?
参考的Gmail API响应结构
{ "id": "", "threadId": "", "labelIds": [], "snippit": "", "payload": { "partId": "", "mimeType": "", "filename": "", "headers": [], "body": {}, "parts": [] }, "sizeEstimate": ###, "historyId": "", "internalDate": "" }
内容的提问来源于stack exchange,提问作者Michael Kintscher they-them
相关产品推荐
相关产品推荐

