/robotframework-imaplibrary

Mail Library for Robot Framework

Primary LanguagePython

robotframework-imaplibrary

robotframework-imaplibrary is a Robot Framework test library to test mail validation tasks.

Installation

To install, just fetch the latest version from PyPI:.

pip install --upgrade robotframework-imaplibrary

Usage

Setup in the robotframework Settings section:

Setting Value
Library

ImapLibrary

These keyword actions are available:

Open Mailbox:
    Open the mailbox on a mail server with a valid authentication:
    Arguments:
        - server:   the server name (e.g. imap.googlemail.com)
        - user:     the user name (e.g. me@googlemail.com)
        - password: the user's password

Wait for Mail:
    Wait for an incoming mail. Check the mailbox every 10 seconds
    for incoming mails until a matching email is received or the
    timeout is exceeded. Returns the mail number of the latest matching
    email.
    Arguments:
        - fromEmail: the email address of the sender (not required)
        - toEmail:   the email address of the receiver (not required)
        - status:    the status of the email (not required)
        - timeout:   the timeout how long the mailbox shall check emails
                     in seconds (defaults to 60 seconds)

Get Links From Email:
    Finds all links in an email body and returns them

    Arguments:
        - mailNumber: is the index number of the mail to open

Get Matches From Email:
    Finds all occurrences of a regular expression

    Arguments:
        - mailNumber: is the index number of the mail to open
        - regexp: a regular expression to find

Open Link from Mail:
    Find a link in an email body and open the link. Returns the links' html.
    Arguments:
        mailNumber: the number of the email to check for a link
        linkNumber: the index of the link to open
                    (defaults to 0, which is the first link)

Get Email body:
    Returns an email body
    Arguments:
        mailNumber: the number of the email to check for a link

Walk Multipart Email
    Returns the number of parts of a multipart email. Content is stored internally
    to be used by other multipart keywords. Subsequent calls iterate over the
    elements, and the various Get Multipart keywords retrieve their contents.

    Arguments:
        mailNumber: the index number of the mail to open

Get Multipart Content Type
    Return the content-type for the current part of a multipart email

Get Multipart Payload
    Return the payload for the current part of a multipart email

    Arguments:
        decode: an optional flag that indicates whether to decoding

Get Multipart Field Names
    Return the list of header field names for the current multipart email

Get Multipart Field
    Returns the content of a header field 

    Arguments:
        field: a string such as 'From', 'To', 'Subject', 'Date', etc.

Mark as read:
    Mark all received mails as read

Close Mailbox:
    Close the mailbox after finishing all mail activities of a user.

For more informaiton on status see: Mailbox Status.

Here is an example of how to use the library:

Action Argument Argument Argument Argument Argument
Open Mailbox server=imap.googlemail.com user=mymail@googlemail.com password=mysecretpassword

${LATEST}= ${HTML}= Should Contain Close Mailbox

Wait for Mail Open Link from Mail ${HTML}

fromEmail=noreply@register.com ${LATEST} Your email address has been updated

toEmail=mymailalias@googlemail.com

status=UNSEEN

timeout=150

Here is an example of how to work with multipart emails, ignoring all non content-type='test/html' parts:

Action Argument Argument Argument Argument
Open Mailbox server=imap.googlemail.com user=mymail@googlemail.com password=mysecretpassword

${LATEST}= ${parts}= @{fields}= ${from}= ${to}= ${subject}= :FOR Close Mailbox

Wait for Mail Walk Multipart Email Get Multipart Field Names Get Multipart Field Get Multipart Field Get Multipart Field ${i} Walk Multipart Email ${content-type}= Continue For Loop If ${payload}= Should Contain ${HTML}= Should Contain

fromEmail=noreply@register.com ${LATEST}

From To Subject IN RANGE ${LATEST} Get Multipart Content Type '${content-type}' != 'text/html' Get Multipart Payload ${payload} Open Link from Mail ${HTML}

toEmail=mymailalias@googlemail.com

${parts}

decode=True Update your email address ${LATEST} Your email address has been updated

timeout=150

License

The robotframework-imaplibrary is licensed under the Apache 2.0 License.