Appends an email to specified IMAP4/Exchange folder.
[Visual Basic 6.0] Public Sub Append( _ Folder As Imap4Folder, _ data As Variant _ )
[Visual C++] public: HRESULT Append( IImap4Folder* Folder, VARIANT data );
Parameters
Example
[Visual Basic 6.0, VBScript, Visual C++, Delphi] The following example demonstrates how to append email to "INBOX" with EAGetMail POP3 & IMAP ActiveX Object. To get the full samples of EAGetMail, please refer to Samples section.
[Visual Basic 6.0] Function FindFolder(ByVal FolderPath As String, ByRef folders As FolderCollection) Dim i As Long For i = 0 To folders.Count - 1 Dim oFolder As Imap4Folder Set oFolder = folders.Item(i) If StrComp(oFolder.LocalPath, FolderPath, 1) = 0 Then Set FindFolder = oFolder Exit Function End If Set oFolder = FindFolder(FolderPath, oFolder.SubFolderList) If Not (oFolder Is Nothing) Then Set FindFolder = oFolder Exit Function End If Next Set FindFolder = Nothing End Function Public Sub AppendEmail(emlFile As String, _ Server As String, _ User As String, _ Password As String, _ SSLConnection As Boolean) Const MailServerPop3 = 0 Const MailServerImap4 = 1 Const MailServerEWS = 2 Const MailServerDAV = 3 Const MailServerMsGraph = 4 On Error GoTo ErrorHandle Dim oMail As New EAGetMailObjLib.Mail oMail.LicenseCode = "TryIt" oMail.LoadFile emlFile, False 'To append/upload email with Exchange Web Service, please change 'MailServerImap4 to MailServerEWS to MailServer.Protocol 'To append/upload email with Exchange WebDAV, please change 'MailServerImap4 to MailServerDAV to MailServer.Protocol 'Exchange Server supports POP3/IMAP4 protocol as well, but in Exchange 2007 'or later version, POP3/IMAP4 service is disabled by default. If you don't want to use POP3/IMAP4 'to download email from Exchange Server, you can use Exchange Web Service(Exchange 2007/2010 or 'later version) or WebDAV(Exchange 2000/2003) protocol. 'For Exchange Web Service/WebDAV, please ignore 'Port property. But for Exchange Web Service, please set SSLConnection to True Dim oServer As New EAGetMailObjLib.MailServer oServer.Server = Server oServer.User = User oServer.Password = Password oServer.SSLConnection = SSLConnection oServer.Protocol = MailServerImap4 If oServer.SSLConnection = True Then oServer.Port = 993 Else oServer.Port = 143 End If Dim oClient As New EAGetMailObjLib.MailClient oClient.LicenseCode = "TryIt" oClient.Connect oServer Dim oFolder As Imap4Folder '' If you want search sub folder, use parentfolder\subfolder ' For example: INBOX\MySubFolder Set oFolder = FindFolder("INBOX", oClient.GetFolderList()) If oFolder Is Nothing Then MsgBox "No folder found!" Exit Sub End If 'appends this email to "INBOX" folder oClient.Append oFolder, oMail.Content oClient.Logout Exit Sub ErrorHandle: MsgBox Err.Description End Sub
[VBScript] Function FindFolder(ByVal FolderPath, ByRef folders) Dim i For i = 0 To folders.Count - 1 Dim oFolder Set oFolder = folders.Item(i) If StrComp(oFolder.LocalPath, FolderPath, 1) = 0 Then Set FindFolder = oFolder Exit Function End If Set oFolder = FindFolder(FolderPath, oFolder.SubFolderList) If Not (oFolder Is Nothing) Then Set FindFolder = oFolder Exit Function End If Next Set FindFolder = Nothing End Function Public Sub AppendEmail(emlFile, _ Server, _ User, _ Password, _ SSLConnection ) Const MailServerPop3 = 0 Const MailServerImap4 = 1 Const MailServerEWS = 2 Const MailServerDAV = 3 Const MailServerMsGraph = 4 Dim oMail Set oMail = CreateObject("EAGetMailObj.Mail") oMail.LicenseCode = "TryIt" oMail.LoadFile emlFile, False 'To append/upload email with Exchange Web Service, please change 'MailServerImap4 to MailServerEWS to MailServer.Protocol 'To append/upload email with Exchange WebDAV, please change 'MailServerImap4 to MailServerDAV to MailServer.Protocol 'Exchange Server supports POP3/IMAP4 protocol as well, but in Exchange 2007 'or later version, POP3/IMAP4 service is disabled by default. If you don't want to use POP3/IMAP4 'to download email from Exchange Server, you can use Exchange Web Service(Exchange 2007/2010 or 'later version) or WebDAV(Exchange 2000/2003) protocol. 'For Exchange Web Service/WebDAV, please ignore 'Port property. But for Exchange Web Service, please set SSLConnection to True Dim oServer Set oServer = CreateObject("EAGetMailObj.MailServer") oServer.Server = Server oServer.User = User oServer.Password = Password oServer.SSLConnection = SSLConnection oServer.Protocol = MailServerImap4 If oServer.SSLConnection = True Then oServer.Port = 993 Else oServer.Port = 143 End If Dim oClient Set oClient = CreateObject("EAGetMailObj.MailClient") oClient.LicenseCode = "TryIt" oClient.Connect oServer Dim oFolder '' If you want search sub folder, use parentfolder\subfolder ' For example: INBOX\MySubFolder Set oFolder = FindFolder("INBOX", oClient.GetFolderList()) If oFolder Is Nothing Then MsgBox "No folder found!" Exit Sub End If 'appends this email to "INBOX" folder oClient.Append oFolder, oMail.Content oClient.Logout End Sub
[Visual C++] #include "stdafx.h" #include <windows.h> #include "eagetmailobj.tlh" using namespace EAGetMailObjLib; IImap4FolderPtr FindFolder(LPCTSTR folderPath, IFolderCollectionPtr& folders) { for(long i = 0; i < folders->Count; i++) { IImap4FolderPtr oFolder = folders->GetItem(i); if(_tcsicmp((TCHAR*)oFolder->LocalPath, folderPath) == 0) { return oFolder; } IFolderCollectionPtr subFolders = oFolder->SubFolderList; oFolder = FindFolder(folderPath, subFolders); if(oFolder != NULL) { return oFolder; } } return NULL; } void AppendMail(LPCTSTR lpszEmlFile, LPCTSTR lpszServer, LPCTSTR lpszUser, LPCTSTR lpszPassword, VARIANT_BOOL SSLConnection) { ::CoInitialize(NULL); const int MailServerPop3 = 0; const int MailServerImap4 = 1; const int MailServerEWS = 2; const int MailServerDAV = 3; const int MailServerMsGraph = 4; try { IMailPtr oMail = NULL; oMail.CreateInstance(__uuidof(EAGetMailObjLib::Mail)); oMail->LicenseCode = _T("TryIt"); oMail->LoadFile(lpszEmlFile, VARIANT_FALSE); IMailServerPtr oServer = NULL; oServer.CreateInstance(__uuidof(EAGetMailObjLib::MailServer)); //To append/upload email with Exchange Web Service, please change //MailServerImap4 to MailServerEWS to MailServer.Protocol //To append/upload email with Exchange WebDAV, please change //MailServerImap4 to MailServerDAV to MailServer.Protocol //Exchange Server supports POP3/IMAP4 protocol as well, but in Exchange 2007 //or later version, POP3/IMAP4 service is disabled by default. If you don't want to use POP3/IMAP4 //to download email from Exchange Server, you can use Exchange Web Service(Exchange 2007/2010 or //later version) or WebDAV(Exchange 2000/2003) protocol. //For Exchange Web Service/WebDAV, please ignore //Port property. But for Exchange Web Service, please set SSLConnection to True oServer->Server = lpszServer; oServer->User = lpszUser; oServer->Password = lpszPassword; oServer->SSLConnection = SSLConnection; oServer->Protocol = MailServerImap4; if(SSLConnection == VARIANT_TRUE) oServer->Port = 993; else oServer->Port = 143; IMailClientPtr oClient = NULL; oClient.CreateInstance(__uuidof(EAGetMailObjLib::MailClient)); oClient->LicenseCode = _T("TryIt"); oClient->Connect(oServer); IFolderCollectionPtr folders = oClient->GetFolderList(); // If you want search sub folder, use parentfolder\subfolder // For example: INBOX\\MySubFolder IImap4FolderPtr oFolder = FindFolder(_T("INBOX"), folders); if(oFolder != NULL) { //appends this email to "INBOX" folder oClient->Append(oFolder, oMail->Content); } oClient->Logout(); } catch(_com_error &ep) { _tprintf(_T("%s\r\n"), (TCHAR*)ep.Description()); } ::CoUninitialize(); }
[Delphi] const MailServerPop3 = 0; MailServerImap4 = 1; MailServerEWS = 2; MailServerDAV = 3; function FindFolder(folderPath: WideString; folders: IFolderCollection) :IImap4Folder; var i: integer; folder: IImap4Folder; begin for i:= 0 to folders.Count - 1 do begin folder := folders.Item[i]; if CompareText(folder.LocalPath, folderPath) = 0 then begin result := folder; exit; end; // Search folder in sub-folders folder := FindFolder(folderPath, folder.SubFolderList); if not (folder = nil ) then begin result := folder; exit; end; end; // No folder found result := nil; end; procedure AppendMail(emlFile: WideString; server: WideString; user: WideString; password: WideString); var oServer: TMailServer; oClient: TMailClient; oMail: IMail; oFolder: IImap4Folder; begin try oMail := TMail.Create(Application); oMail.LicenseCode := 'TryIt'; oMail.LoadFile(emlFile, false); oServer := TMailServer.Create(Application); oServer.Server := server; oServer.User := user; oServer.Password := password; oServer.Protocol := MailServerImap4; // Enable SSL Connection, most modern email servers require SSL/TLS by default oServer.SSLConnection := true; oServer.Port := 993; // If your IMAP doesn't deploy SSL connection // Please use // oServer.SSLConnection := false; // oServer.Port := 143; oClient := TMailClient.Create(Application); oClient.LicenseCode := 'TryIt'; oClient.Connect1(oServer.DefaultInterface); ShowMessage('Connected!'); // If you want search sub folder, use parentfolder\subfolder // For example: INBOX\MySubFolder oFolder := FindFolder('Inbox', oClient.GetFolderList()); if oFolder = nil then raise Exception.Create('No folder found'); oClient.Append(oFolder, oMail.Content); oClient.Logout(); except on ep:Exception do ShowMessage('Error: ' + ep.Message); end; end;
See Also