Quick Start With Email Client

Built-In Email Client

Aspose.Email Cloud API contains a built-in email client.

The built-in email client supports:

  • SMTP
  • POP3
  • IMAP
  • EWS
  • WebDav
  • Virtual multi-account

Virtual multi-account is a fast and convenient way to set up multiple email accounts and use them as a single one.

How to Work With Email Client

Before we start, we should set up an email account. This allows you to process your messages with built-in Email Client which is developed by Aspose.Email Cloud.

The created email account will be saved on storage, so you don’t have to repeat this operation later.

Setup email account

First of all, you need to set up your email account’s credentials with EmailClientAccountPasswordCredentials class. Define two fields: Login (Email client account login) and Password (Email client account password).

Then you need to initialize EmailClientAccount object. Let’s define the following parameters:

  • Host — Mail server hostname or IP address.
  • Port — Mail server port.
  • ProtocolType — Type of connection protocol. Enum, available values: IMAP, POP3, SMTP, EWS, WebDav.
  • SecurityOptions — Email account security mode Enum, available values: None, SSLExplicit, SSLImplicit, SSLAuto, Auto.
  • Credentials — Email client account credentials that we have created before.

To save your email account use SaveAsync from ClientAccountApi. You should create a request for this operation using ClientAccountSaveRequest, which has 2 parameters:

  • Value — Object we want to save on Storage.
  • StorageFile — StorageFileLocation object, which contains IMAP account’s file location information, including storage name, a path to an account folder, name of the file with IMAP account’s configurations.

Search Emails

To search for emails in your email account’s folders you need to call ListAsync from ClientMessageApi. This method has one parameter — ClientMessageListRequest, which is a request model for this operation. In this model you should define the following fields:

  • Folder — A folder in email account.
  • Account — Email account.
  • QueryString — A MailQuery search string.
  • Storage — Storage name where account file(s) located.
  • AccountStorageFolder — Folder in storage where account file(s) located.
  • Recursive [optional] — Specifies that should message be searched in subfolders recursively.
  • Type - Using this property you can get messages in different formats (as EmailDto, MapiMessageDto or a file represented as Base64 string).
  • Format - Base64 data format. Used only if Type is set to Base64.

After that, you will get a list of messages matching your search criteria as MailMessageBaseList.

Now you can search emails

Fetch Message By Id

In the previous step, we have got a list of emails. Let’s fetch one of them by its Id.

To do this you should use the email’s Id, obviously, and FetchAsync method from ClientMessageApi. This method requires 1 parameter — ClientMessageFetchRequest, which is a request model for this operation.  ClientMessageFetchRequest has the following parameters:

  • MessageId — Message identifier. 
  • Account — Email account.
  • Folder — Account folder to fetch from (should be specified for some protocols such as IMAP).
  • Storage — Storage name where account file(s) located.
  • AccountStorageFolder — Folder in storage where account file(s) located.
  • Type - Using this property you can get messages in different formats (as EmailDto, MapiMessageDto or a file represented as Base64 string).
  • Format - Base64 data format. Used only if Type is set to Base64.

Аfter this operation you will receive an email as an object inherited from MailMessageBase.

Fetch found message by id

Mark Message as Read

You need to know message’s Id to mark it as read. We have done it in previous steps.

To mark a message as read use SetIsReadAsync from ClientMessageApi. This method requires 1 parameter — ClientMessageSetIsReadRequest, which is a request model for this operation.

ClientMessageSetIsReadRequest has 3 parameters:

  • AccountLocation — Account location on storage.
  • MessageId — Message identifier.
  • IsRead — Specifies that message should be marked read or unread.

Mark message as read

Delete Message

In an attempt to manage your messages, you may need to delete some of them. To remove a message, you should know the Id of the email you want to delete.

To delete email use DeleteAsync from ClientMessageApi. This method requires 1 parameter — ClientMessageDeleteRequest, which is a request model for this operation.

ClientMessageDeleteRequest requires the following parameters:

  • AccountLocation — Account location on storage.
  • MessageId — Message identifier.
  • Folder — Folder to delete message from.

Append new message

To append a new message to your email account — use AppendAsync from ClientMessageApi. This method requires 1 parameter — ClientMessageAppendRequest, which is a request model for this operation.

ClientMessageAppendRequest requires the following parameters:

  • AccountLocation — Account location on storage.
  • Folder — Path to folder on email server to append message to.
  • MarkAsSent — Mark message as sent.
  • Message — Email document.

Setup email account for sending messages

All you have to do to setup your email account for sending messages is to use SaveAsync from ClientAccountApi. This method requires 1 parameter — ClientAccountSaveRequest, which is a request model for this operation.

ClientAccountSaveRequest requires the following parameters:

Send Email

To send a message using your email account — use SendAsync from ClientMessageApi. This method requires 1 parameter — ClientMessageSendRequest, which is a request model for this operation.

ClientMessageSendRequest requires the following parameters:

  • AccountLocation — Account location on storage.
  • Message — Email document to send.

More Tutorials

See more Aspose Email tutorials: