Microsoft Graph API 以 HTML 形式返回邮件正文

s-a*_*a-n 6 c# office365 office365api microsoft-graph-security microsoft-graph-api

我想阅读我的电子邮件并将它们转换为 json。我正在使用Microsoft Graph API像这样查询 Office 365 邮箱

GraphServiceClient client = new GraphServiceClient(
            new DelegateAuthenticationProvider (
                (requestMessage) =>
                    {
                        requestMessage.Headers.Authorization =
                                            new AuthenticationHeaderValue("Bearer", token);
                        return Task.FromResult(0);
                    }
                )
            );

var mailResults = await client.Me.MailFolders.Inbox.Messages.Request()
                                .OrderBy("receivedDateTime DESC")
                                .Select(m => new { m.Subject, m.ReceivedDateTime, m.From, m.Body})
                                .Top(100)
                                .GetAsync();
Run Code Online (Sandbox Code Playgroud)

我按照教程进入了这个阶段。但是我的消息正文返回为 html 而不是文本。有没有办法可以指定 message.body 返回文本甚至 json 而不是 HTML?

Jer*_*son 9

不必设置 HTTP 请求标头:

首选:outlook.body-content-type="text"

requestMessage.Headers.Add("Prefer", "outlook.body-content-type='text'");
Run Code Online (Sandbox Code Playgroud)

根据文档https://docs.microsoft.com/en-us/previous-versions/office/office-365-api/api/version-2.0/mail-rest-operations

编辑:

查看文档,这是客户端类代码:https : //github.com/microsoftgraph/msgraph-sdk-dotnet/blob/dev/src/Microsoft.Graph/Requests/Generated/GraphServiceClient.cs

以下是您所关注的链接中的一个示例:

private static GraphServiceClient GetClient(string accessToken, IHttpProvider provider = null)
{
        var delegateAuthProvider = new DelegateAuthenticationProvider((requestMessage) =>
        {
            requestMessage.Headers.Authorization = new AuthenticationHeaderValue("bearer", accessToken);

            return Task.FromResult(0);
        });

        var graphClient = new GraphServiceClient(delegateAuthProvider, provider ?? HttpProvider);

        return graphClient;
 }
Run Code Online (Sandbox Code Playgroud)

  • 太棒了,谢谢你!!!你是传说中的伙伴!requestMessage.Headers.Add("Prefer", "outlook.body-content-type='text'"); 工作! (3认同)
  • 你认为我应该指定这样的东西吗?requestMessage.Headers.Add("outlook.body-content-type", "text"); 仍然不起作用。任何其他方式来指定标题? (2认同)