fetch email attachments

is it possible to extract just the attachment out of a email

i have created imap account email user test@ wwwwww.net

which will get two emails daily the emails will only have a subject dbstats1 or dbstat2 and a zip attachment

would like in vbs or python
LVL 31
James MurrellProduct SpecialistAsked:
Who is Participating?
 
David LeeConnect With a Mentor Commented:
"does outlook have to be open?"
No, the code launches Outlook in the background.  Your solution will work too.

"and do a send and recieve"
No.  Your solution does that though.

"can code mark to delete? or delete"
Yes, the code can delete the item.  I revised the code to delete the item after processing.
Dim olkApp, olkSes, olkFld, olkMsg, olkAtt, intIndex
Set olkApp = CreateObject("Outlook.Application")
Set olkSes = olkApp.GetNameSpace("MAPI")
'Change the profile name on the next line'
olkSes.Logon "Outlook"
Set olkFld = olkSes.GetDefaultFolder(6)
For intIndex = olkFld.Items.Count to 1 Step -1
    Set olkMsg = olkFld.Items.Item(intIndex)
    Select Case LCase(olkMsg.Subject)
        Case "dbstats1", "dbstats2"
            For Each olkAtt in olkMsg.Attachments
                'Change the path on the next line as desired'
                olkAtt.SaveAsFile "C:\Some Folder\" & olkAtt.Filename
            Next
            olkMsg.Delete
    End Select
Next
Set olkAtt = Nothing
Set olkMsg = Nothing
Set olkFld = Nothing
olkSes.Logoff
Set olkSes = Nothing
Set olkApp = Nothing

Open in new window

0
 
Éric MoreauSenior .Net ConsultantCommented:
I know you would prefer vbs or python but here is a library you can use from a .Net application: http://www.lesnikowski.com/mail/Index.aspx
0
 
James MurrellProduct SpecialistAuthor Commented:
no to .net now development tools / not enough learning time
0
Cloud Class® Course: Microsoft Azure 2017

Azure has a changed a lot since it was originally introduce by adding new services and features. Do you know everything you need to about Azure? This course will teach you about the Azure App Service, monitoring and application insights, DevOps, and Team Services.

 
David LeeCommented:
Hi, cs97jjm3.

What email client do you have on your computer?  If it's Outlook, then I can show you how to script this using VBScript.
0
 
James MurrellProduct SpecialistAuthor Commented:
thunderbird... but could setup outlook, but ideally not.....

0
 
David LeeCommented:
Sorry, don't know anything about Thunderbird other than what it is.  If you decide to use Outlook, then I'll be glad to help.
0
 
James MurrellProduct SpecialistAuthor Commented:
Outlook express ok?

0
 
David LeeCommented:
Outlook Express isn't programmable.  Only the full version of Outlook.
0
 
James MurrellProduct SpecialistAuthor Commented:
ok can use outlook if need be? 2003 ok

0
 
David LeeCommented:
Outlook 2003 is fine.  Here's the code.  Follow these instructions to use this.

1.  Open Notepad
2.  Copy the code in the snippet  
3.  Paste the code into Notepad
4.  Edit the code as needed.  I placed comments where things can or should change.
5.  Save the file with a .vbs extension
6.  Run the code by double-clicking on the file

The code uses Outlook to check all messages in the inbox.  If a message has a subject of "dbstats1" or "dbstats2", then the code saves all the message attachments to the folder of your choice.
Dim olkApp, olkSes, olkFld, olkMsg, olkAtt
Set olkApp = CreateObject("Outlook.Application")
Set olkSes = olkApp.GetNameSpace("MAPI")
'Change the profile name on the next line'
olkSes.Logon "Outlook"
Set olkFld = olkSes.GetDefaultFolder(6)
For Each olkMsg in olkFld.Items
    Select Case LCase(olkMsg.Subject)
        Case "dbstats1", "dbstats2"
            For Each olkAtt in olkMsg.Attachments
                'Change the path on the next line as desired'
                olkAtt.SaveAsFile "C:\Some Folder\" & olkAtt.Filename
            Next
    End Select
Next
Set olkAtt = Nothing
Set olkMsg = Nothing
Set olkFld = Nothing
olkSes.Logoff
Set olkSes = Nothing
Set olkApp = Nothing

Open in new window

0
 
James MurrellProduct SpecialistAuthor Commented:
silly question, does outlook have to be open? if so can code do that... and do a send and recieve
0
 
James MurrellProduct SpecialistAuthor Commented:
ok ignore last comment

Set oShell = CreateObject("WScript.Shell")
oShell.Run "outlook"

did the trick -


but can code mark to delete? or delete

ps: cheers for this
0
 
James MurrellProduct SpecialistAuthor Commented:
Thanks you for you help, you explain the code very well a star a ee i would say
0
 
David LeeCommented:
Thank you!  Glad I could help out.
0
 
alam747Commented:
Please let me know how to filter only the attached of daily data like todays data not all of the attached email.  Thanks for your co-operation and understanding.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.