robotframework-imaplibrary is a Robot Framework test library to test mail validation tasks.
Lovely Systems does not not support this package anymore and do not have any follow up package in the same area.
@rickypc continues our work. You can find his fork and further infos at:
https://github.com/rickypc/robotframework-imaplibrary
best regards, Manfred (Github: schwendinger, schwendinger at lovelysystems.com)
To install, just fetch the latest version from PyPI:.
pip install --upgrade robotframework-imaplibrary
Setup in the robotframework Settings section:
Setting | Value |
---|---|
Library |
|
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 |
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 |
The robotframework-imaplibrary is licensed under the Apache 2.0 License.