Skip to main content
Version: 12 - TBD

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.
  • idle Wait for the next message (IMAP IDLE / push instead of polling). Blocks until a message matching the search criteria (default UNSEEN) is present in the folder. By default (timeout = 0) it waits indefinitely; the connector re-issues IDLE internally to keep the session alive, so the caller never handles IMAP protocol timeouts. Set a positive timeout to bound the wait and return timed_out: true. Requires the server IDLE capability (RFC 6851 / RFC 2177). Returns {'message_ids': [...], 'timed_out': bool, 'folder': str} — fetch the returned ids with the fetch mode.
  • fetch Fetch messages. Text payloads will be included in the outputs. Other payloads will be stored as Cloudomation Engine 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. Each message includes an internaldate field: the server-assigned receive time (ISO-8601, or null if the server did not supply it). Unlike the sender-set date header, internaldate is authoritative and can be used to order messages deterministically.
  • 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.

Input Schema

  • schema_version = '10.0'

    Type: string

  • authentication

    Type: anyOf

  • host

    The remote hostname or IP address.

    Type: string

  • port

    Type: anyOf

  • tls

    If to connect using TLS/SSL.

    Type: anyOf

  • mode

    Type: anyOf

  • idempotent

    Whether re-running this connection from the start is safe (no duplicate side effects). Controls recovery after the connection between Cloudomation and the remote system is lost and later re-established (network glitch, workspace restart, ...): repeatable connections are left running to be reattached or re-run, others are cancelled. Leave unset to let the connector decide based on the operation.

Output Schema

Constants

supports_reconnect = False

Example

List all available folders of a mailbox:

import flow_api

def handler(system: flow_api.System, this: flow_api.Execution, inputs: dict):
folders = this.connect(
connector_type='IMAP',
authentication={
'authentication_method': 'username_password',
'username': '...',
'password': '...',
},
host='...',
port=...,
mode={
'mode_name': '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, inputs: dict):
message_ids = this.connect(
connector_type='IMAP',
authentication={
'authentication_method': 'username_password',
'username': '...',
'password': '...',
},
host='...',
port=...,
mode={
'mode_name': '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, inputs: dict):
messages = this.connect(
connector_type='IMAP',
authentication={
'authentication_method': 'username_password',
'username': '...',
'password': '...',
},
host='...',
port=...,
mode={
'mode_name': '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, inputs: dict):
folders = this.connect(
connector_type='IMAP',
authentication={
'authentication_method': 'username_password',
'username': '...',
'password': '...',
},
host='...',
port=...,
mode={
'mode_name': 'remove_flags',
'message_set': [
'15',
],
'flags': [
'\Seen',
],
},
).get('output_value')['result']
this.log(folders=folders)
return this.success('all done')