Process E-mail attachements

  • Thread starter Thread starter Question Boy
  • Start date Start date
Q

Question Boy

Hello,

I have an e-mail with over 300 attachments (.eml format). I would need some
serious help to loop through each attachment file Grab the body content and
save it as a Text file with a unique filename.

Originally I was going to save the eml file and use them but they have the
same name (don't ask) so I'd have to rename each attachment manually which is
just not doable with the quatity at hand.

Thank you for your guidance,

QB
 
I'm having a similar dilemma, I think.

I received a dozen emails. Each of them has a dozen more emails as
attachments (.eml files). Each of these has multiple attachmetns that are
files like PDFs, CSVs, etc.

I'm having trouble accessing the attachments of the attachments using VBA.
 
You would need to first convert the EML files (which Outlook does not
understand natively) to regular messages.
There is nothing in OOM that can help you. Outlook 2002 and higher expose
IConverterSEssion object that can be used for conversion in Extended MAPI
(C++ or Delphi only).
<plug>
you can use Redemption to import EML files to Outlook (see
SafeMailItem.Import) or (if you do not want the temporary messages in
Outlook) you can create temporary standalone MSG files and import EML files:

set Session = CreateObject("Redemption.RDOSession")

set Msg = Session.CreateMessageFromMsgFile("c:\temp\test.msg", "IPM.Note",
1)

Msg.Import "c:\Temp\attach.eml", 1024

Msg.Save

MsgBox Msg.Attachments.Count



</plug>

--
Dmitry Streblechenko (MVP)
http://www.dimastr.com/
OutlookSpy - Outlook, CDO
and MAPI Developer Tool
-
 
I misspoke when I said they were EML files. They were MSG files. I ended
up fixing the problem by saving each MSG file to disk then opening it.

Sub saveAttachments(mitem As MailItem)
Dim att_mitem As MailItem
Dim new_fname As String

For i = 1 To mitem.Attachments.Count
Select Case mitem.Attachments.item(i).Type
Case olByValue
fileCount = fileCount + 1
new_fname = "C:\attachments\" & Right("0000" & fileCount, 4)
& "." & Right(mitem.Attachments.item(i).FileName, 3)
LogMessage (vbTab & mitem.Attachments.item(i).FileName & "
--> " & new_fname)
mitem.Attachments.item(i).SaveAsFile (new_fname)
Case olEmbeddeditem
mitem.Attachments.item(i).SaveAsFile
("C:\attachments\tmp.msg")
Set att_mitem =
Application.CreateItemFromTemplate("C:\attachments\tmp.msg")
LogMessage ("**" & vbTab & att_mitem.Subject)
saveAttachments att_mitem
End Select
Next

End Sub
 
Back
Top