我找了一整天了,还是没找到。我很惊讶没有人发布这样的例子。
在我们的应用程序中,大多数时候显示电子邮件的文本/纯文本版本就足够了。但是,有几个地方我们希望将 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'");这是一个低容量站点,因此额外的开销应该不成问题。就是感觉很脏。
我会尝试获取消息的 MIME 内容,您可以在哪里获取
GET /me/
GET /users/{id}/messages/{id}/$value
关于您的代码片段,
message.Body.Content
不是一个集合,因此生成的代码片段永远不会工作。
提出两个请求
Prefer: outlook.body-content-type='text'
Prefer: outlook.body-content-type='html'
似乎是开销,所以我更喜欢 MIME 内容并从中解析你需要的内容