MailClient.Append Method


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

Folder
The dest IMAP folder.
data
The binary data of email.

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

MailClient.AppendEx Method
MailClient.SelectFolder Method