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 | 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. [email protected]) - 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 | [email protected] | password=mysecretpassword | ||
${LATEST}= | Wait for Mail | [email protected] | [email protected] | status=UNSEEN | timeout=150 |
${HTML}= | Open Link from Mail | ${LATEST} | |||
Should Contain | ${HTML} | Your email address has been updated | |||
Close Mailbox |
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 | [email protected] | password=mysecretpassword | |
${LATEST}= | Wait for Mail | [email protected] | [email protected] | timeout=150 |
${parts}= | Walk Multipart Email | ${LATEST} | ||
@{fields}= | Get Multipart Field Names | |||
${from}= | Get Multipart Field | From | ||
${to}= | Get Multipart Field | To | ||
${subject}= | Get Multipart Field | Subject | ||
:FOR | ${i} | IN RANGE | ${parts} | |
Walk Multipart Email | ${LATEST} | |||
${content-type}= | Get Multipart Content Type | |||
Continue For Loop If | '${content-type}' != 'text/html' | |||
${payload}= | Get Multipart Payload | decode=True | ||
Should Contain | ${payload} | Update your email address | ||
${HTML}= | Open Link from Mail | ${LATEST} | ||
Should Contain | ${HTML} | Your email address has been updated | ||
Close Mailbox |
The robotframework-imaplibrary is licensed under the Apache 2.0 License.