我想在.msg
应用程序中以Node
格式获取电子邮件的内容。目前,我发送以下SOAP请求以获取电子邮件的html版本:
const getEmailContentSOAP = `<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types">
<soap:Header>
<RequestServerVersion Version="Exchange2013"
xmlns="http://schemas.microsoft.com/exchange/services/2006/types"
soap:mustUnderstand="0" />
</soap:Header>
<soap:Body>
<GetItem
xmlns="http://schemas.microsoft.com/exchange/services/2006/messages"
xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types">
<ItemShape>
<t:BaseShape>Default</t:BaseShape>
<t:IncludeMimeContent>true</t:IncludeMimeContent>
</ItemShape>
<ItemIds>
<t:ItemId Id="${emailID}" />
</ItemIds>
</GetItem>
</soap:Body>
</soap:Envelope>`;
是否可以直接获取.msg版本或将其转换为.msg?
答案 0 :(得分:4)
没有MSG格式是Office文件格式(复合文件格式https://en.wikipedia.org/wiki/Compound_File_Binary_Format,这不是微不足道的),因此通常使用Outlook或Redemption是唯一可行的方法,同时也是人们通常会遇到的唯一真正原因尝试使用MSG格式是为了维护您需要MAPI的MAPI属性和附件类型的保真度。
对于使用EWS所做的操作,使用IncludeMimeContent返回的内容是消息的MIMEConent,可以将其保存为EML文件,从而在支持EML的任何电子邮件客户端(包括Outlook)中打开,这通常足以满足大多数情况事物(不包括迁移)。
答案 1 :(得分:1)
正如Glen所说,生成EML格式的电子邮件。我已经做到了,它可以与其他邮件客户端配合使用(SharePoint还具有.eml文件的预览模式!)。
我建议您使用Microsoft Graph API获取所有邮件数据,以便生成.eml邮件。
使用附件获取单个邮件数据的API调用示例:
`https://graph.microsoft.com/v1.0/me/messages/${messageId}?$expand=attachments`
然后将其转换。
您可以通过以下网址获取更多数据:
答案 2 :(得分:0)
它处于beta版本,没有文档,但是您可以使用Microsoft Graph API获得MIME内容:
GET https://graph.microsoft.com/beta/me/messages/{id}/$value
或
GET https://graph.microsoft.com/beta/users/{id | userPrincipalName}/messages/{id}/$value
您可以尝试使用Graph Explorer,将版本设置为beta。
然后,您可以将响应另存为.eml文件。