Skip to main content
Version: 6 - Palatschinke

ConnectorTypeIMAP

class connector_types.connector_type_imap.ConnectorTypeIMAP

Access an IMAP mailbox.

Supported commands

  • capabilities Query server capabilities Returns a list of IMAP4 capabilities as responded by the server.
  • list_folders List available folders. Returns a list of dictionaries describing the folders on the IMAP server.
  • folder_info Fetch information about a folder Returns a dictionary containing the folder information
  • search Search for messages in a folder. The folder can be specified in the folder input. Search criteria can be specified in the criteria input. Returns a list of message IDs.
  • fetch Fetch messages. Text payloads will be inlcuded in the outputs. Other payloads will be stored as Cloudomation files if the store_attachments input is set to True The folder can be specified in the folder input. The message IDs to fetch can be specified in the message_set input. Returns a dictionary describing the fetched messages.
  • add_flags Add flags to messages. The folder can be specified in the folder input. The message IDs to fetch can be specified in the message_set input. The flags to add can be specified in the flags input. Returns a dictionary describing the flags of the messages.
  • get_flags Get flags of messages. The folder can be specified in the folder input. The message IDs to fetch can be specified in the message_set input. Returns a dictionary describing the flags of the messages.
  • remove_flags Remove flags from messages. The folder can be specified in the folder input. The message IDs to fetch can be specified in the message_set input. The flags to remove can be specified in the flags input. Returns a dictionary describing the flags of the messages.
  • set_flags Set flags of messages. The folder can be specified in the folder input. The message IDs to fetch can be specified in the message_set input. The flags to set can be specified in the flags input. Returns a dictionary describing the flags of the messages.
  • move Move messages to a folder The source folder can be specified in the folder input. The target folder can be specified in the target_folder input. The message IDs to fetch can be specified in the message_set input. Requires the MOVE capability of the IMAP server. See RFC 6851.
  • delete Delete messages. The message IDs to delete can be specified in the message_set input. Returns a dictionary describing the flags of the deleted messages.

Inputs

NameTypeDefaultDescription
commandStringlist_foldersThe IMAP command to use. Please refer to the Supported commands.
criteriaList( String )NoneSpecify search criteria. If not specified "ALL" will be used. Please see https://tools.ietf.org/html/rfc3501#section-6.4.4 for possible criteria. Example: criteria=[ 'SUBJECT', 'test', 'SINCE', '11-Oct-2020', 'UNSEEN', ]
flagsList( String )NoneFlags to add, set or remove.
folderStringNoneThe folder to use. If not specified "INBOX" will be used.
hostString
loginStringNone
message_setStringNoneThe message_set option is a string specifying one or more messages to be acted upon. It may be a simple message number ('1'), a range of message numbers ('2:4'), or a group of non-contiguous ranges separated by commas ('1:3,6:9'). A range can contain an asterisk to indicate an infinite upper bound ('3:*').
passwordStringNone
portNumberNoneIf not specified the default port is used (143 without SSL, or 993 with SSL)
store_attachmentsBooleanFalseSet to True to store non-text email payloads in the Cloudomation files resource
target_folderStringNoneThe target folder. Only used with the move command.
use_sslBooleanTrueWhether or not to connect using IMAP4-over-SSL

Outputs

NameTypeDefaultDescription
execution_idintThe ID of the connection execution
loglist
messagestrThe ended message for the connection. If the connection ended with an error, the message will contain information about what went wrong
resultObject
statusstrThe ended status for the connection. Either "success" or "error".

Constants

input_list = ['command', 'criteria', 'flags', 'folder', 'host', 'login', 'message_set', 'password', 'port', 'store_attachments', 'target_folder', 'use_ssl'] output_list = ['log', 'result'] ssl_context_inputs = ['check_hostname', 'client_cert', 'client_key', 'server_ca'] version = 1

Methods

Example

List all available folders of a mailbox:

import flow_api

def handler(system: flow_api.System, this: flow_api.Execution):
folders = this.connect(
connector_type='IMAP',
host='imap.gmail.com',
port=993,
use_ssl=True,
login='example@gmail.com',
password='***',
command='list_folders',
).get('output_value')['result']
this.log(folders=folders)
return this.success('all done')

List all unread (unseen) messages in a folder:

import flow_api

def handler(system: flow_api.System, this: flow_api.Execution):
message_ids = this.connect(
connector_type='IMAP',
host='imap.gmail.com',
port=993,
use_ssl=True,
login='example@gmail.com',
password='***',
command='search',
folder='INBOX',
criteria=[
'UNSEEN',
],
).get('output_value')['result']
this.log(message_ids=message_ids)
return this.success('all done')

Fetch a message:

import flow_api

def handler(system: flow_api.System, this: flow_api.Execution):
messages = this.connect(
connector_type='IMAP',
host='imap.gmail.com',
port=993,
use_ssl=True,
login='example@gmail.com',
password='***',
command='fetch',
message_set=[
'1,8:15',
],
).get('output_value')['result']
this.log(messages=messages)
return this.success('all done')

Mark a message as unseen:

The flag which is used to track seen/unseen status might differ between IMAP implementations.

import flow_api

def handler(system: flow_api.System, this: flow_api.Execution):
folders = this.connect(
connector_type='IMAP',
host='imap.gmail.com',
port=993,
use_ssl=True,
login='example@gmail.com',
password='***',
command='remove_flags',
message_set=[
'15',
],
flags=[
'\Seen',
],
).get('output_value')['result']
this.log(folders=folders)
return this.success('all done')