Close
    logoCloudomation Docs

    TaskIMAP

    class tasks.task_imap.TaskIMAP

    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.

    Inputs

    NameTypeDefaultDescription
    commandStringlist_foldersThe IMAP command to use. Please refer to the Supported commands section.
    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 October 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
    use_sslBooleanTrueWhether or not to connect using IMAP4-over-SSL

    Outputs

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

    Constants

    input_list = ['command', 'criteria', 'flags', 'folder', 'host', 'login', 'message_set', 'password', 'port', 'store_attachments', 'use_ssl']output_list = ['log', 'result']version = 1

    Methods

    handle_add_flags ()
    handle_capabilities ()
    handle_fetch ()
    handle_fetch_get_payloads (message_id, message)
    handle_folder_info ()
    handle_get_flags ()
    handle_list_folders ()
    handle_remove_flags ()
    handle_search ()
    handle_set_flags ()
    run ()
    select_folder ()

    Example

    List all available folders af a mailbox:

    import flow_api
    def handler(system: flow_api.System, this: flow_api.Execution):
    folders = this.task(
    '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):
    folders = this.task(
    '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(folders=folders)
    return this.success('all done')

    Fetch a message:

    import flow_api
    def handler(system: flow_api.System, this: flow_api.Execution):
    folders = this.task(
    '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(folders=folders)
    return this.success('all done')

    Mark a message unseen:

    The flag to 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.task(
    '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')
    Previous
    TaskGOOGLE
    Next
    TaskK8S