Chilkat HOME ASP Visual Basic VB.NET C# Visual C++ C MFC Delphi FoxPro Java Perl PHP Python Ruby SQL Server VBScript
|
Scan for Emails with Attachments and Save Attachments to FilesScan for emails with attachments and save attachments. LOCAL loImap LOCAL lnSuccess LOCAL loMessageSet LOCAL lnFetchUids LOCAL loBundle LOCAL i LOCAL loEmail LOCAL lnNumAttach LOCAL lcUidStr LOCAL lnUid LOCAL loFullEmail LOCAL j LOCAL lcFilename loImap = CreateObject('Chilkat.Imap') * Anything unlocks the component and begins a fully-functional 30-day trial. lnSuccess = loImap.UnlockComponent("Anything for 30-day trial") IF (lnSuccess <> 1) THEN =MESSAGEBOX(loImap.LastErrorText) QUIT ENDIF * Connect to an IMAP server. lnSuccess = loImap.Connect("mail.chilkatsoft.com") IF (lnSuccess <> 1) THEN =MESSAGEBOX(loImap.LastErrorText) QUIT ENDIF * Login lnSuccess = loImap.Login("admin@chilkatsoft.com","*myPassword5*") IF (lnSuccess <> 1) THEN =MESSAGEBOX(loImap.LastErrorText) QUIT ENDIF * Select an IMAP mailbox lnSuccess = loImap.SelectMailbox("Inbox") IF (lnSuccess <> 1) THEN =MESSAGEBOX(loImap.LastErrorText) QUIT ENDIF * We can choose to fetch UIDs or sequence numbers. lnFetchUids = 1 * Get the message IDs of all the emails in the mailbox loMessageSet = loImap.Search("ALL",lnFetchUids) IF (loMessageSet = NULL ) THEN =MESSAGEBOX(loImap.LastErrorText) QUIT ENDIF * Fetch the email headers into a bundle object: loBundle = loImap.FetchHeaders(loMessageSet) IF (loBundle = NULL ) THEN RELEASE loMessageSet =MESSAGEBOX(loImap.LastErrorText) QUIT ENDIF * Scan for emails with attachments, and save the attachments * to a sub-directory. FOR i = 0 TO loBundle.MessageCount - 1 loEmail = loBundle.GetEmail(i) * Does this email have attachments? * Use GetMailNumAttach because the attachments * are not actually in the email object because * we only downloaded headers. * (Had we downloaded the full emails by * calling mailman.FetchBundle, we could look * at the email object's NumAttachments property.) lnNumAttach = loImap.GetMailNumAttach(loEmail) IF (lnNumAttach > 0) THEN * Download the entire email and save the * attachments. (Remember, we * need to download the entire email because * only the headers were previously downloaded. * If the entire emails were downloaded by * calling FetchBundle instead of FetchHeaders, * this would not be necessary. * The ckx-imap-uid header field is added when * headers are downloaded. This makes it possible * to get the UID from the email object. lcUidStr = loEmail.GetHeaderField("ckx-imap-uid") lnUid = VAL(lcUidStr) loFullEmail = loImap.FetchSingle(lnUid,1) IF (NOT (loFullEmail = NULL )) THEN loFullEmail.SaveAllAttachments("attachmentsDir") RELEASE loFullEmail ENDIF FOR j = 0 TO lnNumAttach - 1 lcFilename = loImap.GetMailAttachFilename(loEmail,j) ? lcFilename NEXT ENDIF RELEASE loEmail NEXT * Disconnect from the IMAP server. loImap.Disconnect() RELEASE loMessageSet RELEASE loBundle |
Need a specific example? Send a request to support@chilkatsoft.com
© 2000-2007 Chilkat Software, Inc. All Rights Reserved.
Mail Component · .NET Email Component · ASP Mail Component · XML Parser