使用 Microsoft Graph SDK 获取电子邮件的文本和 html 部分

问题描述 投票:0回答:1

我找了一整天了,还是没找到。我很惊讶没有人发布这样的例子。

在我们的应用程序中,大多数时候显示电子邮件的文本/纯文本版本就足够了。但是,有几个地方我们希望将 HTML 放入 Rich Text 控件中。基本上,是为了在上下文中查看内联图像。我可以进行字符串替换以指向磁盘上的图像附件。

我是 Microsoft Graph 的新手。我对电子邮件了解一点,但以前从未深入研究过。我在搜索中看到了几个非常接近的片段,但它们都遗漏了一些设置代码,而我的图表和电子邮件知识还不足以填补这些漏洞。

来自 ChatGPT 的一个片段很诱人:

foreach (var bodyPart in message.Body.Content)
{
    if (bodyPart.Type == BodyType.Text)
    {
        textBody = bodyPart.Content.ToString();
    }
    else if (bodyPart.Type == BodyType.Html)
    {
        htmlBody = bodyPart.Content.ToString();
    }
}

这看起来正是我想要的。但是,它没有告诉我如何设置。我已经搜索了该示例中的一些文本行,但没有找到 ChatGPT 从中提取该文本的页面。

我询问了团队中具有 Graph 经验的人员,但没有人手头有快速解决方案。

此时我正要赌,就点开消息两遍。一次使用 requestMessage.Headers.Add("Prefer", "outlook.body-content-type='text'");一次使用 requestMessage.Headers.Add("Prefer", "outlook.body-content-type='html'");这是一个低容量站点,因此额外的开销应该不成问题。就是感觉很脏。

multipart microsoft-graph-sdks
1个回答
0
投票

我会尝试获取消息的 MIME 内容,您可以在哪里获取

  • 纯文本消息
  • 带有替代内容的消息(即纯文本和 HTML
  • 回复消息并附上原消息
  • 带有图像、音频、视频或应用程序文件附件的短信
  • 其他消息结构
GET /me/
GET /users/{id}/messages/{id}/$value

关于您的代码片段,

message.Body.Content
不是一个集合,因此生成的代码片段永远不会工作。

提出两个请求

  • 一个与
    Prefer: outlook.body-content-type='text'
  • 第二个是
    Prefer: outlook.body-content-type='html'

似乎是开销,所以我更喜欢 MIME 内容并从中解析你需要的内容

© www.soinside.com 2019 - 2024. All rights reserved.