Email Connector Reference¶
The following operations allow you to work with the Email Connector. Click an operation name to see parameter details and samples on how to use it.
init
The init operation configures the connection parameters used to establish a connection to the mail server.
Parameter Name | Description | Required |
---|---|---|
host | Host name of the mail server. | Yes |
port | The port number of the mail server. | Yes |
name | Unique name the connection is identified by. | Yes |
username | Username used to connect with the mail server. | Yes |
password | Password to connect with the mail server. | Yes |
connectionType | Email connection type (protocol) that should be used to establish the connection with the server. (IMAP/IMAPS/POP3/POP3S/SMTP/SMTPS). | Yes |
readTimeout | The socket read timeout value. E.g., 100000. | Optional |
connectionTimeout | The socket connection timeout value. E.g., 100000. | Optional |
writeTimeout | The socket write timeout value. E.g., 100000. | Optional |
requireTLS | Whether the connection should be established using TLS. The default value is false. Therefore, for secured protocols SSL will be used by default. | Optional |
checkServerIdentity | Whether server identity should be checked. | Optional |
trustedHosts | Comma separated string of trust host names. | Optional |
sslProtocols | Comma separated string of SSL protocols. | Optional |
cipherSuites | Comma separated string of Cipher Suites. | Optional |
maxActiveConnections | Maximum number of active connections in the pool. When negative, there is no limit to the number of objects that can be managed by the pool at one time. Default is 8. | Optional |
maxIdleConnections | Maximum number of idle connections in the pool. When negative, there is no limit to the number of objects that may be idle at one time. Default is 8. | Optional |
maxWaitTime | Specifies the number of milliseconds to wait for a pooled component to become available when the pool is exhausted and the exhaustedAction is set to WHEN_EXHAUSTED_WAIT. If maxWait is negative, it will be blocked indefinitely. Default is -1. | Optional |
evictionCheckInterval | The number of milliseconds between runs of the object evictor. When non-positive, no eviction thread will be launched. The default setting for this parameter is -1 | Optional |
minEvictionTime | The minimum amount of time an object may sit idle in the pool before it is eligible for eviction. When non-positive, no object will be dropped from the pool due to idle time alone. This setting has no effect unless timeBetweenEvictionRunsMillis > 0. The default setting for this parameter is 30 minutes. | Optional |
exhaustedAction | The behavior of the pool when the pool is exhausted. (WHEN_EXHAUSTED_FAIL/WHEN_EXHAUSTED_BLOCK/WHEN_EXHAUSTED_GROW) Default is WHEN_EXHAUSTED_FAIL. | Optional |
enableOAuth2 | Whether to enable OAuth2 Authentication. Possible values are true or false . |
Default is set to false . |
grantType | Grant type. E.g., AUTHORIZATION_CODE, CLIENT_CREDENTIALS |
Required if enableOAuth2Authentication is true |
clientId | Value of the Client ID you obtained when you register your application | Required if enableOAuth2Authentication is true |
clientSecret | Value of the Client Secret you obtained when you register your application | Required if enableOAuth2Authentication is true |
tokenUrl | The token endpoint URL to generate access token. | Required if enableOAuth2Authentication is true |
scope | Scope of the connection. | Required if the grantType is CLIENT_CREDENTIALS |
refreshToken | The generated refresh token. | Required if the grantType is AUTHORIZATION_CODE |
Sample configuration
<email.connection>
<host>127.0.0.1</host>
<port>465</port>
<connectionType>SMTPS</connectionType>
<name>smtpconnection</name>
<username>user1</username>
<password>user1</password>
</email.connection>
list
The list operation retrieves emails matching the specified filters.
Parameter Name | Description | Required |
---|---|---|
deleteAfterRetrieve | Whether the email should be deleted after retrieving. | Optional |
receivedSince | The date after which to retrieve received emails. | Optional |
receivedUntil | The date until which to retrieve received emails. | Optional |
sentSince | The date after which to retrieve sent emails. | Optional |
sentUntil | The date until which to retrieve sent emails. | Optional |
subjectRegex | Subject Regex to match with the wanted emails. | Optional |
fromRegex | From email address to match with the wanted emails. | Optional |
seen | Whether to retrieve 'seen' or 'not seen' emails. | Optional |
answered | Whether to retrieve 'answered' or 'unanswered' emails. | Optional |
deleted | Whether to retrieve 'deleted' or 'not deleted' emails. | Optional |
recent | Whether to retrieve 'recent' or 'past' emails. | Optional |
offset | The index from which to retrieve emails. | Optional |
limit | The number of emails to be retrieved. | Optional |
folder | Name of the Mailbox folder to retrieve emails from. Default is INBOX . |
Optional |
Sample configuration
<email.list configKey="imapconnection">
<subjectRegex>{json-eval($.subjectRegex)}</subjectRegex>
<seen>{json-eval($.seen)}</seen>
<answered>{json-eval($.answered)}</answered>
<deleted>{json-eval($.deleted)}</deleted>
<recent>{json-eval($.recent)}</recent>
<offset>{json-eval($.offset)}</offset>
<limit>{json-eval($.limit)}</limit>
<folder>{json-eval($.folder)}</folder>
</email.list>
Sample request
Following is a sample REST/JSON request that can be handled by the list operation.
{
"subjectRegex":"This is the subject",
"offset":"0",
"limit":"2",
"folder":"INBOX"
}
Sample response
The response received would contain the meta data of the email as below.
{
"emails": {
"email": [
{
"index": 0,
"emailID": "<1623446944.0.152334336343@localhost>",
"to": "<your-email>@gmail.com",
"from": "<your-email>@gmail.com",
"replyTo": "<your-email>@gmail.com",
"subject": "Sample email",
"attachments": {
"index": "0",
"name": "contacts.csv",
"contentType": "TEXT/CSV"
}
}
]
}
}
Note: The index of the email can be used to retrieve the email content and attachment content using below operations.
getEmailBody
Note: 'List' operation MUST be invoked prior to invoking this operation as it will retrieve the email body of the emails retrieved by the 'list' operation.
The getEmailBody operation retrieves the email content.
Parameter Name | Description | Required |
---|---|---|
emailIndex | Index of the email as per above response of which to retrieve the email body and content. | Yes |
Sample configuration
<email.getEmailBody>
<emailIndex>0</emailIndex>
</email.getEmailBody>
Following properties will be set in the message context containing email data.
- EMAIL_ID: Email ID of the email.
- TO: Recipients of the email.
- FROM: Sender of the email.
- SUBJECT: Subject of the email.
- CC: CC Recipients of the email.
- BCC: BCC Recipients of the email.
- REPLY_TO: Reply to Recipients of the email.
- HTML_CONTENT: HTML content of the email.
- TEXT_CONTENT: Text content of the email.
getEmailAttachment
Note: 'List' operation MUST be invoked prior to invoking this operation as it will retrieve the attachment of the emails retrieved by the 'list' operation.
The getEmailAttachment operation retrieves the email content.
Parameter Name | Description | Required |
---|---|---|
emailIndex | Index of the email as per above response of which to retrieve the email body and content. | Yes |
attachmentIndex | Index of the attachment as per above response of which to retrieve the attachment content. | Yes |
Sample configuration
<email.getEmailAttachment>
<emailIndex>0</emailIndex>
<attachmentIndex>0</attachmentIndex>
</email.getEmailAttachment>
Following properties will be set in the message context containing attachment data.
- ATTACHMENT_TYPE: Content Type of the attachment.
- ATTACHMENT_NAME: Name of the attachment.
This operation will set the content of the attachment in the message context according to its content type.
Sample response
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Body><axis2ns3:text xmlns:axis2ns3="http://ws.apache.org/commons/ns/payload">id,firstname,surname,phone,email
1,John1,Doe,096548763,[email protected]
2,Jane2,Doe,091558780,[email protected]
</axis2ns3:text></soapenv:Body></soapenv:Envelope>
send
The send operation sends an email to specified recipients with the specified content.
Parameter Name | Description | Required |
---|---|---|
from | The 'From' address of the message sender. | Yes |
to | The recipient addresses of 'To' (primary) type. | Yes |
personalName | The personal name of the message sender. This is available from Email Connector version 1.1.2 onwards. | Optional |
cc | The recipient addresses of 'CC' (carbon copy) type. | Optional |
bcc | The recipient addresses of 'BCC' (blind carbon copy) type. | Optional |
replyTo | The email addresses to which to reply to this email. | Optional |
subject | The subject of the email. | Optional |
content | Body of the message in any format. | Optional |
contentType | Content Type of the body text. | Optional |
encoding | The character encoding of the body. | Optional |
attachments | The attachments that are sent along with the email body. | Optional |
contentTransferEncoding | Encoding used to indicate the type of transformation that is used to represent the body in an acceptable manner for transport. | Optional |
NOTE: If there are any custom headers to be added to the email they can be set as Axis2 properties in the context with the prefix "EMAIL-HEADER:" as the property name similar to below.
<property name="EMAIL-HEADER:myProperty" value="testValue"/>
Sample configuration
<email.send configKey="smtpconnection">
<from>{json-eval($.from)}</from>
<to>{json-eval($.to)}</to>
<subject>{json-eval($.subject)}</subject>
<content>{json-eval($.content)}</content>
<attachments>{json-eval($.attachments)}</attachments>
</email.send>
Sample request
{
"from": "[email protected]",
"to": "[email protected]",
"subject": "This is the subject",
"content": "This is the body",
"attachments": "/Users/user1/Desktop/contacts.csv"
}
NOTE: The latest Email connector (v1.0.2 onwards) supports the attachments from JSON request payload. The connector is tested with .txt, .pdf and images (.png and .jpg).
{ "attachments": [{"name": "sampleimagefile.png", "content": "iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg=="}] }
delete
The delete operation deletes an email.
Parameter Name | Description | Required |
---|---|---|
emailID | Email ID of the email to delete. | Yes |
folder | Name of the mailbox folder from which to delete the emails. Default is INBOX . |
Optional |
Sample configuration
<email.delete configKey="imapconnection">
<folder>{json-eval($.folder)}</folder>
<emailID>{json-eval($.emailID)}</emailID>
</email.delete>
Sample request
{
"folder":"Inbox",
"emailID": "<296045440.2.15945432523040@localhost>"
}
markAsDeleted
The markAsDeleted operation marks an email as deleted.
Parameter Name | Description | Required |
---|---|---|
emailID | Email ID of the email to mark as deleted. | Yes |
folder | Name of the mailbox folder where the email is. Default is INBOX . |
Optional |
Sample configuration
<email.markAsRead configKey="imapconnection">
<folder>{json-eval($.folder)}</folder>
<emailID>{json-eval($.emailID)}</emailID>
</email.markAsRead>
Sample request
{
"folder":"Inbox",
"emailID": "<296045440.2.15945432523040@localhost>"
}
markAsRead
The markAsRead marks an email as read.
Parameter Name | Description | Required |
---|---|---|
emailID | Email ID of the email to mark as read. | Yes |
folder | Name of the mailbox folder where the email is. Default is INBOX . |
Optional |
Sample configuration
<email.markAsRead configKey="imapconnection">
<folder>{json-eval($.folder)}</folder>
<emailID>{json-eval($.emailID)}</emailID>
</email.markAsRead>
Sample request
{
"folder":"Inbox",
"emailID": "<296045440.2.15945432523040@localhost>"
}
expungeFolder
The expungeFolder operation permanently deletes the emails marked for deletion.
Parameter Name | Description | Required |
---|---|---|
folder | Name of the mailbox folder where the email is. Default is INBOX . |
Optional |
Sample configuration
<email.expungeFolder configKey="imapconnection">
<folder>{json-eval($.folder)}</folder>
</email.expungeFolder>
Sample request
{
"folder":"Inbox"
}
inlineImages
The inlineImages
parameter, is a JSONArray that enables the insertion of inline image details. This parameter can be used to specify the image properties, such as the image URL, size, and alignment, among others. By including inline images in the JSONArray, developers can create more visually appealing and engaging content within their application. Note that this feature is available from Email connector version 1.1.1 onwards.
There are 2 methods you can follow to add images, as listed below.
1. Providing file path
{
"from": "[email protected]",
"to": "[email protected]",
"subject": "Sample email subject",
"content": "<H1>Image1</H1><img src=\"cid:image1\" alt=\"this is image of image1\"><br/><H1>Image2</H1><img src=\"cid:image2\" alt=\"this is image of image2\">",
"inlineImages": [
{
"contentID": "image1",
"filePath": "/Users/user/Documents/images/image1.jpeg"
},
{
"contentID": "image2",
"filePath": "/Users/user/Documents/images/image2.jpeg"
}
],
"contentType": "text/html"
}
2. Base64Content
{
"from": "abc@wso2com",
"to": "[email protected]",
"subject": "Sample email subject",
"content": "<H1>Image1</H1><img src=\"cid:image1\" alt=\"this is image of a image1\"><br/><H1>Image2</H1><img src=\"cid:image2\" alt=\"this is a image2\">",
"inlineImages": [
{
"contentID": "image1",
"fileName": "image1.jpeg",
"base64Content": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAY......"
},
{
"contentID": "image2",
"fileName": "image2.jpeg",
"base64Content": "/9j/4AAQSkZJRgABAQEBLAEsAAD/4QBbRXhp...."
}
],
"contentType": "text/html"
}
Sample configuration in a scenario¶
The following is a sample proxy service that illustrates how to connect to the Email connector and use the send operation to send an email. You can use this sample as a template for using other operations in this category.
Sample Proxy
<proxy xmlns="http://ws.apache.org/ns/synapse"
name="SendEmail"
transports="https,http"
statistics="disable"
trace="disable"
startOnLoad="true">
<target>
<inSequence>
<email.send configKey="smtpsconnection">
<from>{json-eval($.from)}</from>
<to>{json-eval($.to)}</to>
<subject>{json-eval($.subject)}</subject>
<content>{json-eval($.content)}</content>
</email.send>
<respond/>
</inSequence>
</target>
<description/>
</proxy>
Note: For more information on how this works in an actual scenario, see Email Connector Example.
Top