根据设计发送电子邮件似乎只提供状态代码而没有更多信息。
如果成功,该方法返回 202 Accepted 响应码。它不会在响应正文中返回任何内容。
我该如何获取我发送邮件的messageId?我似乎无法在网上找到该信息。
或者有什么方法可以在发送前设置吗?
或者我是否需要保存草稿并通过对图形 api 的额外调用来发送它,从而导致两次调用而不是一次?
这是我到目前为止得到的:
var options = new TokenCredentialOptions { AuthorityHost = AzureAuthorityHosts.AzurePublicCloud };
var credentials = new UsernamePasswordCredential(configuration.EmailAddress, configuration.Password,
configuration.TenantId, configuration.ClientId, options);
var graphClient = new GraphServiceClient(credentials, new[] { "https://graph.microsoft.com/.default" });
var body = new Microsoft.Graph.Me.SendMail.SendMailPostRequestBody();
//configuration of the mail goes here
await graphClient.Me.SendMail.PostAsync(body);
还知道如何获取实际的发送消息吗?来自 Mimekit,我可以轻松地将其转换为 MemoryStream。
消息发送是异步的,这意味着 API 不会返回消息的 Id,将消息保存在邮箱发送项目中也是选项,这是提交过程的一部分。
或者我是否需要保存草稿并通过对图形 api 的额外调用来发送它,从而导致两次调用而不是一次?
如果您使用 ImmutableId 的 https://learn.microsoft.com/en-us/graph/outlook-immutable-id 然后确保将项目保存到 SendItems 文件夹中,您将能够访问它(将其导出模仿,如果这就是你想做的事等等)。
我该如何获取我发送邮件的messageId?我看不出来 在线查找该信息。
或者有什么方法可以在发送前设置吗?
您可以通过在发送时设置 PidTagInternetMessageId 属性来设置 InternetMessageId,例如
{
"message": {
"subject": "Meet for lunch?",
"body": {
"contentType": "Text",
"content": "The new cafeteria is open."
},
"toRecipients": [
{
"emailAddress": {
"address": "[email protected]"
}
}
],
"singleValueExtendedProperties": [
{
"id": "String 0x1035",
"value": "[email protected]"
}
]
}
}