Vba 如何将邮件本身的附件保存为传入电子邮件的附件?
我正在尝试保存txt文件,这是msg的附件,这是我的Outlook收到的电子邮件的附件。我知道怎么做了,它工作得很好,我在这里发布我的解决方案。但是,这并不是最有效的解决方案,因为它首先将附加的msg文件保存到我的硬盘上,然后使用过程CreateItemFromTemplate再次读取,最后保存附加的txt文件 我试图存储在硬盘上的txt文件相当大。正如Outlook显示的“节省”提示,每次打开Outlook时下载两次邮件内容都是浪费时间 以下是我的尝试:Vba 如何将邮件本身的附件保存为传入电子邮件的附件?,vba,email,outlook,Vba,Email,Outlook,我正在尝试保存txt文件,这是msg的附件,这是我的Outlook收到的电子邮件的附件。我知道怎么做了,它工作得很好,我在这里发布我的解决方案。但是,这并不是最有效的解决方案,因为它首先将附加的msg文件保存到我的硬盘上,然后使用过程CreateItemFromTemplate再次读取,最后保存附加的txt文件 我试图存储在硬盘上的txt文件相当大。正如Outlook显示的“节省”提示,每次打开Outlook时下载两次邮件内容都是浪费时间 以下是我的尝试: Sub saveESGMtoDisk(
Sub saveESGMtoDisk(itm As Outlook.MailItem)
Dim objAtt As Outlook.Attachment
Dim objAtt_sec As Outlook.Attachment
Dim oMsg As Outlook.MailItem
Dim saveFolder As String: saveFolder = "C:\test"
Dim i As Integer: i = 0
Dim oApp As Outlook.Application
Set oApp = New Outlook.Application
For Each objAtt In itm.Attachments
If Left(objAtt.DisplayName,7) = "txtdata" Then
On Error Resume Next
objAtt.SaveAsFile (saveFolder & "\Item[" & i & "].msg")
If Err.Number Then objAtt.SaveAsFile (saveFolder & "\Item[" & i & "].msg")
Set oMsg = oApp.CreateItemFromTemplate(saveFolder & "\Item[" & i & "].msg")
For Each objAtt_sec In oMsg.Attachments
If Right(objAtt_sec.DisplayName, 3) = "txt" Then _
OobjAtt_sec.SaveAsFile saveFolder & "\" & objAtt_sec.DisplayName
Set objAtt_sec = Nothing
Next
Kill saveFolder & "\Item[" & i & "].msg"
Set oMsg = Nothing
i = i + 1
End If
Set objAtt = Nothing
Next
End Sub
Outlook对象模型不会让您直接访问嵌入式消息附件——如果您使用C++或Delphi,可以使用扩展的MAPI使用IAt::OpenPrimePrpAdxCyDATAOOBJ,IIDAIMIMESEGE打开嵌入式消息附件。p> 或者,您可以使用包装扩展MAPI并可从任何语言使用的文件,并执行以下操作:
RDOSession session = new RDOSession();
RDOMail msg = (RDOMail)session.GetRDOObjectFromOutlookObject(YourOutlookMailItem);
foreach (RDOAttachment att in msg.Attachments)
{
if (att.Type == rdoAttachmentType.olEmbeddedItem)
{
RDOMail embeddedMsg = att.EmbeddedMsg;
ProcessEmbeddedMessage(embeddedMsg);
}
}
你看过和看过吗