我们有一个服务,将所有传入的电子邮件转发到Exchange服务器给特定的团队成员。我们有两个问题与签名电子邮件-提取附件从这些邮件和转发这些签名的电子邮件。我们已经解决了使用米梅杰包提取附件的问题。
当尝试用转发方法转发签名电子邮件时,如果出现以下错误,它将失败:
未在存储区中找到指定的对象。无法打开附件。
代码看起来像这样,没有什么特别之处:
origMessage.Forward(Nothing, forwardToAddress)这是EWS的一个已知问题吗?引用“打开附件”的错误让我觉得它应该查找一些实际上不存在的附件--消息中唯一的附件是签名smime.7m。
如果电子邮件没有签名,则相同的行执行得很好,并成功地转发了电子邮件。既然我们成功地解决了与Mimekit的第一个问题,是否也能帮助转发签名的电子邮件??
发布于 2019-07-24 12:15:29
由于我无法正确转发电子邮件,我决定“假装转发”,基本上发送一个新的信息,看起来是一样的。我怀疑问题是原始邮件中存在证书数据,我不允许转发。新创建的电子邮件(显然)不包含此证书。
Private Shared Sub FakeForwardOfSignedEmail(ByRef origMail As EmailMessage, ByVal cc As String, ByRef attachments As List(Of Tuple(Of String, Byte())))
Dim fakeForward = origMail.CreateForward()
fakeForward.ToRecipients.Add(cc)
fakeForward.Subject = "FW: " + origMail.Subject
Dim body As New MessageBody
body.Text = "<hr><b>From: </b>" + origMail.Sender.Name + " (" + origMail.Sender.Address + ")<br />"
body.Text += "<b>Sent: </b>" + origMail.DateTimeSent.ToString + "<br />"
body.Text += "<b>To: </b>" + origMail.ReceivedBy.Name + " (" + origMail.ReceivedBy.Address + ")<br />"
body.Text += "<b>Subject: </b>" + origMail.Subject + "<br /><br />"
body.Text += origMail.Body.ToString
fakeForward.Body = body
Dim forwardMsg As EmailMessage = fakeForward.Save()
For Each att As Tuple(Of String, Byte()) In attachments
forwardMsg.Attachments.AddFileAttachment(att.Item1, att.Item2)
Next
forwardMsg.Send()
End Subhttps://stackoverflow.com/questions/57150586
复制相似问题