Python API

Outlook.Application

class RPA.Outlook.Application.Application(autoexit: bool = True)

Bases: object

Outlook.Application is a library for controlling the Outlook application.

About Email Filtering

Emails can be filtered according to specification set by Restrict method of the Item class https://docs.microsoft.com/en-us/office/vba/api/outlook.items.restrict.

Couple of examples:

Get Emails
...   email_filter=[Subject]='test email'

Move Emails
...   email_filter=[SenderEmailAddress]='hello@gmail.com'

Examples

Robot Framework

*** Settings ***
Library                 RPA.Outlook.Application
Task Setup              Open Application
Suite Teardown          Quit Application

*** Variables ***
${RECIPIENT}            address@domain.com

*** Tasks ***
Send message
    Send Message       recipients=${RECIPIENT}
    ...                subject=This is the subject
    ...                body=This is the message body
    ..                 attachments=approved.png

Python

from RPA.Outlook.Application import Application

def send_message():
    app = Application()
    app.open_application()
    app.send_message(
        recipients='EMAILADDRESS_1, EMAILADDRESS_2',
        subject='email subject',
        body='email body message',
        attachments='../orders.csv'

For more information, see: https://docs.microsoft.com/en-us/previous-versions/office/developer/office-2007/bb219950(v=office.12)

ROBOT_LIBRARY_DOC_FORMAT = 'REST'
ROBOT_LIBRARY_SCOPE = 'GLOBAL'
close_document(save_changes: bool = False) → None

Close the active document (if open).

Parameters

save_changes – if changes should be saved on close, default False

get_emails(account_name: str = None, folder_name: str = None, email_filter: str = None, save_attachments: bool = False, attachment_folder: str = None, sort: bool = False, sort_key: str = None, sort_descending: bool = True) → List

Get emails from a specified email folder. Can be used to save attachments.

Parameters
  • account_name – needs to be given if there are shared accounts in use, defaults to None

  • folder_name – target folder where to get emails from, default Inbox

  • email_filter – how to filter email, default no filter, ie. all emails in folder

  • save_attachments – if attachments should be saved, defaults to False

  • attachment_folder – target folder where attachments are saved, defaults to current directory

  • sort – if emails should be sorted, defaults to False

  • sort_key – needs to be given if emails are to be sorted

  • sort_descending – set to False for ascending sort, defaults to True

Returns

list of emails (list of dictionaries)

Example:

${emails}=  Get Emails
...    email_folder=priority
...    email_filter=[Subject]='incoming order'
...    save_attachments=True
...    attachment_folder=%{ROBOT_ROOT}${/}attachments
...    sort=True
...    sort_key=Received
...    sort_descending=False
mark_email_as_read(email: Any, read: bool = True) → None

Mark email ‘read’ property. Can be used to mark email as unread.

Parameters
  • email – target email

  • read – True marks email as Read, False as Unread

Example:

${emails}=  Get Emails
# Mark all as read
FOR  ${email}  IN  @{emails}
    Mark Email As Read  ${email}
END

# Mark all as unread
FOR  ${email}  IN  @{emails}
    Mark Email As Read  ${email}  False
END
move_emails(account_name: str = None, source_folder: str = None, email_filter: str = None, target_folder: str = None) → bool

Move emails from source folder to target folder.

Use of “account_name” is recommended if there are shared accounts in use.

Parameters
  • account_name – needs to be given if there are shared accounts in use, defaults to None

  • source_folder – folder where source emails exist

  • email_filter – how to filter email, default no filter, ie. all emails in folder

  • target_folder – folder where emails are moved into

Returns

True if move operation was success, False if not

Example:

# moving messages from Inbox to target_folder
Move Emails
...    target_folder=Processed Invoices
...    email_filter=[Subject]='incoming invoice'

# moving messages from source_folder to target_folder
Move Emails
...    source_folder=Incoming Invoices
...    target_folder=Processed Invoices
...    email_filter=[Subject]='incoming invoice'
open_application(visible: bool = False, display_alerts: bool = False) → None

Open the Outlook application.

Parameters
  • visible – show window after opening, default False

  • display_alerts – show alert popups, default False

quit_application(save_changes: bool = False) → None

Quit the application.

Parameters

save_changes – if changes should be saved on quit, default False

save_email_attachments(attachments: Any, attachment_folder: str) → None

Save email attachments

Note. Keyword “Get Emails” can be also used to save attachments.

Parameters
  • attachments – all attachments from email or single attachment

  • attachment_folder – target folder where attachments are saved, defaults to current directory

Example:

${emails}=  Get Emails
...    email_folder=priority
FOR  ${email}  IN   @{emails}
    FOR  ${attachment}  IN  @{email}[Attachments]
        IF  ${attachment}[size] < 100000   # bytes
            Save Email Attachments
            ...  ${attachment}
            ...  ${CURDIR}${/}attachments
        ELSE IF  ".pdf" in "${attachment}[filename]"
            Save Email Attachments
            ...  ${attachment}
            ...  ${CURDIR}${/}attachments${/}pdf
        END
    END
END
send_email(recipients: Any, subject: str, body: str, html_body: bool = False, attachments: Any = None) → bool

Send email with Outlook

Parameters
  • recipients – list of addresses

  • subject – email subject

  • body – email body

  • html_body – True if body contains HTML, defaults to False

  • attachments – list of filepaths to include in the email, defaults to []

Returns

True if there were no errors

Example:

Send Email
...    recipients=robocorp.tester@gmail.com
...    subject=hello from Outlook
...    body=empty body
...    attachments=${CURDIR}${/}example.xlsx
send_message(recipients: Any, subject: str, body: str, html_body: bool = False, attachments: Any = None) → bool

Send message with Outlook

Parameters
  • recipients – list of addresses

  • subject – email subject

  • body – email body

  • html_body – True if body contains HTML, defaults to False

  • attachments – list of filepaths to include in the email, defaults to []

Returns

True if there were no errors

wait_for_email(criterion: str = None, timeout: float = 5.0, interval: float = 1.0) → Any

Wait for email matching criterion to arrive into mailbox.

Parameters
  • criterion – email filter to wait for, defaults to “”

  • timeout – total time in seconds to wait for email, defaults to 5.0

  • interval – time in seconds for new check, defaults to 1.0

Returns

list of messages or False

Possible wait criterias are: SUBJECT, SENDER and BODY

Example:

Wait for Email     SUBJECT:rpa task calling    timeout=300    interval=10
wait_for_message(criterion: str = None, timeout: float = 5.0, interval: float = 1.0) → Any

Wait for email matching criterion to arrive into mailbox.

Parameters
  • criterion – message filter to wait for, defaults to “”

  • timeout – total time in seconds to wait for email, defaults to 5.0

  • interval – time in seconds for new check, defaults to 1.0

Returns

list of messages or False

Possible wait criterias are: SUBJECT, SENDER and BODY

Example:

Wait for message     SUBJECT:rpa task calling    timeout=300    interval=10
RPA.Outlook.Application.catch_com_error()

Try to convert COM errors to human readable format.