我想在我的Node
应用程序中获取.msg
格式的电子邮件内容。目前,我发送以下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?
发布于 2018-08-28 07:18:21
不,味精格式是一个办公文件格式(复合文件格式https://en.wikipedia.org/wiki/Compound_File_Binary_Format,这不是微不足道的生成),所以通常使用Outlook或赎回是唯一的实际方法来做到这一点,唯一真正的原因,人们通常试图使用味精格式是为了保持MAPI属性和附件类型的保真度,你将需要MAPI。
对于你所做的EWS,你得到的内容与IncludeMimeContent是邮件的MIMEConent,它可以只是保存为EML文件,从而在任何支持EML的电子邮件客户端打开,包括Outlook,这通常是足够的大多数事情(不包括迁移)。
发布于 2018-08-28 22:54:17
正如Glen所说,生成EML格式的电子邮件。我已经这样做了,它在不同的邮件客户端上工作得很好(SharePoint也有.eml文件的预览模式!)。
我建议您使用Microsoft Graph API获取所有邮件数据,这样就可以生成.eml邮件。
获取带有附件的单个邮件数据的API调用示例:
`https://graph.microsoft.com/v1.0/me/messages/${messageId}?$expand=attachments`
然后转换它。
您可以在以下位置获得更多数据:
https://stackoverflow.com/questions/52034959
复制相似问题