Max*_*ead 5 microsoft-graph-api
我正在尝试通过 microsoft-graph-api 获取签名邮件的附件。
我在此 URL 上使用GET 请求:
https://graph.microsoft.com/v1.0/me/messages/AAMkAG.../attachments
Run Code Online (Sandbox Code Playgroud)
这应该返回指定邮件的对象列表。每个对象都包含元数据,例如一个附件的“ name ”和“ contentType ”,以及包含附件内容的属性“ contentBytesbase64-string ” 。
如果邮件没有附件,则此列表为空。
到目前为止,这对于每封未通过 签名的邮件都适用S/MIME。
但是,如果邮件是用 签名的S/MIME,我会在响应列表中得到奇怪的结果。
无论邮件有多少个附件,响应列表都只包含一个元素。然后,该元素带有名称“ smime.p7m ”和 contentType “ multipart/signed ”,而 contentBytes 属性包含邮件的几乎整个 MIME,而不是单个附件的内容。
我无法想象这是理想的行为,所以我问:
这是 microsoft-graph-api 中的错误还是我在请求中做错了什么,如果是这样,我该如何解决这个问题?
这可能与您的问题有点无关,但我花了 3 天尝试从已签名但未加密的电子邮件中提取附件。希望这可以帮助处于类似情况的人。以下是在 vb.net 中对我有用的步骤:
If String.Equals(origMessage.Attachments.First.ContentType, "multipart/signed",
StringComparison.OrdinalIgnoreCase) AndAlso
String.Equals(origMessage.Attachments.First.Name, "smime.p7m", StringComparison.OrdinalIgnoreCase) Then
Run Code Online (Sandbox Code Playgroud)
Dim smimeFile As FileAttachment = origMessage.Attachments.First
smimeFile.Load()
Dim memoryStreamSigned As MemoryStream = New MemoryStream(smimeFile.Content)
Dim entity = MimeEntity.Load(memoryStreamSigned)
Run Code Online (Sandbox Code Playgroud)
If TypeOf entity Is Cryptography.MultipartSigned Then
Dim mltipart As Multipart = entity
Dim attachments As MimeEntity = mltipart(0)
If TypeOf attachments Is Multipart Then
Dim mltipartAttachments As Multipart = attachments
For i As Integer = 0 To mltipartAttachments.Count - 1
If mltipartAttachments(i).IsAttachment Then
**'BOOM, now you're looping your attachment files one by one**
**'Call your decode function to read your attachment as array of Bytes**
End If
Next
End If
End If
Run Code Online (Sandbox Code Playgroud)
'Read and decode content stream
Dim fileStrm = New MemoryStream()
mltipartAttachments(i).Content.DecodeTo(fileStrm)
Dim decodedBytes(0 To fileStrm.Length - 1) As Byte
fileStrm.Position = 0 'This is important because .DecodeTo set the position to the end!!
fileStrm.Read(decodedBytes, 0, Convert.ToInt32(fileStrm.Length))
Run Code Online (Sandbox Code Playgroud)
现在您的附件文件已解码为字节数组,您可以保存它或执行任何您想要的操作:)希望这有帮助!
| 归档时间: |
|
| 查看次数: |
2629 次 |
| 最近记录: |