Chilkat HOME ASP Visual Basic VB.NET C# Visual C++ C MFC Delphi FoxPro Java Perl PHP Python Ruby SQL Server VBScript
Download and Save Email Attachments (POP3)Downloads emails from a POP3 mailbox and saves all attachments.
// Needs #include <CkMailMan.h> // Needs #include <CkEmailBundle.h> // Needs #include <CkEmail.h> CkString strOut; // The mailman object is used for receiving (POP3) // and sending (SMTP) email. CkMailMan mailman; // Any string argument automatically begins the 30-day trial. bool success; success = mailman.UnlockComponent("30-day trial"); if (success != true) { strOut.append("Component unlock failed\r\n"); SetDlgItemText(IDC_EDIT1,strOut.getUnicode()); return; } // Set the POP3 server's hostname mailman.put_MailHost("mail.chilkatsoft.com"); // Set the POP3 login/password. mailman.put_PopUsername("***"); mailman.put_PopPassword("***"); CkEmailBundle *bundle = 0; // Copy the all email from the user's POP3 mailbox // into a bundle object. The email remains on the server. bundle = mailman.CopyMail(); if (bundle == 0 ) { strOut.append(mailman.lastErrorText()); strOut.append("\r\n"); SetDlgItemText(IDC_EDIT1,strOut.getUnicode()); return; } const char * dirPath; dirPath = "c:/myAttachments"; long i; CkEmail *email = 0; for (i = 0; i <= bundle->get_MessageCount() - 1; i++) { email = bundle->GetEmail(i); // You may save all the attachments to the specified directory // by calling SaveAllAttachments. // The SaveAllAttachments method will automatically create the directory // if it does not already exist. success = email->SaveAllAttachments(dirPath); if (success != true) { strOut.append(email->lastErrorText()); strOut.append("\r\n"); SetDlgItemText(IDC_EDIT1,strOut.getUnicode()); return; } // The OverwriteExisting property controls whether already-existing files // are automatically overwritten. By default, it is set to true so that existing // files will be overwritten. // Setting OverwriteExisting = false will cause the attachment-saving methods to generate // unique filenames if a file with the same name already exists. The actual filename(s) // saved will be present by calling GetAttachmentFilename for each attachment *after* // saving. // For example... email->put_OverwriteExisting(false); success = email->SaveAllAttachments(dirPath); if (success != true) { strOut.append(email->lastErrorText()); strOut.append("\r\n"); SetDlgItemText(IDC_EDIT1,strOut.getUnicode()); return; } long n; n = email->get_NumAttachments(); long j; for (j = 0; j <= n - 1; j++) { // If the attachment filename was changed to prevent overwriting, // GetAttachmentFilename will return the new filename. strOut.append(email->getAttachmentFilename(j)); strOut.append("\r\n"); } // You may also save individual attachments: for (j = 0; j <= n - 1; j++) { strOut.append("Original Filename: "); strOut.append(email->getAttachmentFilename(j)); strOut.append("\r\n"); success = email->SaveAttachedFile(j,dirPath); if (success != true) { strOut.append(email->lastErrorText()); strOut.append("\r\n"); SetDlgItemText(IDC_EDIT1,strOut.getUnicode()); return; } // If OverwriteExisting = true, the saved filename will always equal the original filename, // unless there are characters present in the filename that are not allowed by Windows, // such as * ? < > | etc. In those cases the illegal characters are either removed or replaced // with underscore characters to allow the file to be saved. strOut.append("Saved Filename: "); strOut.append(email->getAttachmentFilename(j)); strOut.append("\r\n"); } delete email; } delete bundle; SetDlgItemText(IDC_EDIT1,strOut.getUnicode()); |
Need a specific example? Send a request to support@chilkatsoft.com
© 2000-2008 Chilkat Software, Inc. All Rights Reserved.