Devs and Quality Assurance Testers Can Easily Validate Mail Headers
The SMTP header endpoint provides quality assurance testers with the option to view an email message’s SMTP headers in parsed formats that easily integrate with automated testing frameworks.
Problem
Developers and QAs are often asked to validate contents of emails. This can include from address, links, and subject. For many organizations this can be a manual process of checking the email and validating if the test criteria has been met.
Solution
Mailsac’s new message header endpoint provides SMTP headers in 3 formats:
1. JSON object format, grouped by lowercased header key. This format is easily consumed by industry standard tools such as Selenium.
{
"received": [
"from 107.174.234.77 by frontend1-172-31-29-224 via 172.31.42.57 with HTTP id 8m7iqeiZKJ3MzwTwUQlU for <[email protected]>; Mon Dec 24 2018 15:29:06 GMT+0000 (Coordinated Universal Time)",
"from 107.174.234.77 by smtp-in2-172-31-42-57 via 172.31.23.10 (proxy) with SMTP id 8m7iqeiZKJ3MzwTwUQlU for <[email protected]>; Mon, 24 Dec 2018 15:29:06 UTC",
],
"from": [
"[email protected]"
],
"to": [
"[email protected]"
],
"subject": [
"invitation to collaborate"
],
"date": [
"Mon, 24 Dec 2018 15:29:06 +0000"
]
}
2. Ordered JSON array format. This formats pre-parses the headers, but maintains the original order, while still handling duplicate headers such as Received
.
?format=ordered-jso
n
[
{
"name": "received",
"value": "from 107.174.234.77 by frontend1-172-31-29-224 via 172.31.42.57 with HTTP id 8m7iqeiZKJ3MzwTwUQlU for <[email protected]>; Mon Dec 24 2018 15:29:06 GMT+0000 (Coordinated Universal Time)"
},
{
"name": "received",
"value": "from 107.174.234.77 by smtp-in2-172-31-42-57 via 172.31.23.10 (proxy) with SMTP id 8m7iqeiZKJ3MzwTwUQlU for <[email protected]>; Mon, 24 Dec 2018 15:29:06 UTC"
},
...
{
"name": "to",
"value": "[email protected]"
},
]
3. Plaintext original format. This format is useful when you are interested in parsing or inspecting the email headers yourself, and do not wish to download the entire message.
?format=plain
Received: from 107.174.234.77 by frontend1-172-31-29-224 via 172.31.42.57 with HTTP id 8m7iqeiZKJ3MzwTwUQlU for <[email protected]>; Mon Dec 24 2018 15:29:06 GMT+0000 (Coordinated Universal Time)
Received: from 107.174.234.77 by smtp-in2-172-31-42-57 via 172.31.23.10 (proxy) with SMTP id 8m7iqeiZKJ3MzwTwUQlU for <[email protected]>; Mon, 24 Dec 2018 15:29:06 UTC
...
To: [email protected]
“We are currently using the REST API headers endpoint in support between our own microservices. Our POP3 server fetches headers of message to implement the POP3 TOP command.” — Michael Mayer, Partner Forking Software LLC
Getting Started
The message header endpoint /api/messages/:messageId/headers
is available on all Mailsac plans (including our free tier). See our API Specification for more information.
This code example could can be modified to view the headers for the first email message on an inbox [email protected]
. Make sure to insert your API Key and change the email address to an email address you which is public or reserved by your account.
const superagent = require('superagent') // npm install superagent
const mailsac_api_key = 'YOUR_API_KEY_HERE' // change this!
superagent
.get('https://mailsac.com/api/addresses/[email protected]/messages')
.set('Mailsac-Key', mailsac_api_key)
.then((messages) => {
const messageId = messages.body[0]._id
superagent
.get('https://mailsac.com/api/addresses/[email protected]/messages/' + messageId + '/headers')
.set('Mailsac-Key', mailsac_api_key)
.then((response) => {
console.log(response.body)
})
})
.catch(err => console.error(err))
/**
{
received: [
'from [ by fireroof via ::1 with HTTP id bo4xdVji_oqEixBO0gGLbvIoe for <[email protected]>; Wed, 28 Oct 2020 23:05:29 GMT',
'from [ fireroof with SMTP id bo4xdVji_oqEixBO0gGLbvIoe for <[email protected]>; Wed, 28 Oct 2020 16:05:29 PDT'
],
'x-mailsac-inbound-version': [ '' ],
date: [ 'Wed, 28 Oct 2020 16:05:29 -0700' ],
to: [ '[email protected]' ],
from: [ '[email protected]' ],
subject: [ 'test Wed, 28 Oct 2020 16:05:29 -0700' ],
'message-id': [ '<20201028160528.2893005@fireroof>' ],
'x-mailer': [ 'swaks v20190914.0 jetmore.org/john/code/swaks/' ]
}
**/