Messages
Examples use the postmark client from Usage.
Inbound messages
The inbound messages API is available via the messages.inbound manager:
>>> postmark.messages.inbound.all()
[<InboundMessage: Blocked message from test@example.com>, ...]
There is a simple way to access the headers in the InboundMessage instance:
>>> inbound['X-Spam-Status']
No
Also, you can convert inbound message to MIME instance:
>>> inbound.as_mime()
<email.mime.multipart.MIMEMultipart object at 0x10a232c88>
Attachments
To access the attachments you could use the Attachments attribute of the InboundMessage which returns a list of attachments.
>>> inbound.Attachments
[<Attachment: test.txt>]
The interface is the same - all keys-value pairs in JSON data are attributes of the Attachment:
>>> attachment = inbound.Attachments[0]
>>> attachment.Name
test.txt
Besides it, you could do the following with attachments:
- Access the decoded content
- Check it length
- Save it locally
- Convert it to MIME instance
>>> len(attachment)
45
>>> attachment.decoded
This is attachment contents, base-64 encoded.
>>> attachment.save('/directory/to/save/')
/directory/to/save/test.txt
>>> attachment.as_mime()
<email.mime.base.MIMEBase at 0x10424b7b8>
Outbound messages
The outbound messages API is available via the messages.outbound manager:
>>> postmark.messages.outbound.all()
[<OutboundMessage: Sent message to test@example.com>, ...]
Opens
The opens API handler is located in messages.outbound.opens manager.
>>> postmark.messages.outbound.opens.all()
[<Open: Open from test@example.com>, ...]
Also, you can access to corresponding OutboundMessage instance via message property.
>>> open.message
<Sent message to test@example.com>
Clicks
The clicks API handler is located in messages.outbound.clicks manager.
Each click is a unique link clicked by a recipient.
>>> postmark.messages.outbound.clicks.all(tag='welcome-user')
[<Click: Click from john.doe@yahoo.com>, ...]
>>> click.OriginalLink
https://example.com
>>> click.ClickLocation
HTML
Clicks for a single message, as the raw API response:
>>> message.clicks()
{'TotalCount': 1, 'Clicks': [{'ClickLocation': 'HTML', ...}]}
As with opens, click.message returns the corresponding OutboundMessage.