During my website migration it became evident that I would also need a new email service. Previously the email hosting was integrated in the CPanel of my web hotel.
My choice was Polish EmailLabs for transactional email and mailbox.org for traditional email.
Does a small business need email?
I was thinking whether a one man company actually needs an email. After some pondering and talks with other entrepreneurs the final conclusion was clear.
Yes, I do need an email account.
Emails are so fundamental part of how internet communication works that there are no other valid alternatives. The standards are well established.
What is transactional email?
Traditional email is what humans use in daily business. Outlook, Gmail etc.
A transactional email could be described as email that are sent programmatically from an application. Read here how I built my static website backend to manage the email sending process.
Here are common use cases for transactional email:
Use case | Emails per month on my site |
---|---|
Contact form to receiver and confirmation to sender | 6 |
Confirmation about succesful blog post comment | 4 |
Newsletters | 50 |
Registration confirmation | 0 |
Additionally some quota needs to be reserved for testing.
Combining traditional and transactional email
I did not find a feasible service that would combine both the traditional and transactional email.
The only conclusion was to choose the services separately.
Why I chose EmailLabs for transactional email
As you can see, my website needs to send at most a few hundred transactional emails per month.
I was looking for a low cost or free option. Would not make sense to pay tens of euros per month for such low volumes.
Another condition was server location in EU region due to GDPR constraints. I tried these EU options for transactional email:
Transactional email service | Price | Comments |
---|---|---|
EmailLabs | 9 000 free / month | The only one that checked all boxes |
Brevo (previously Sendinblue) | 9 000 free / month | No answer from the company |
Tipimail | 10 000 free / month | No answer from the company |
MailGun | Start from 35€ / month | Too expensive, no long term free quota |
inbox.eu | 12 € / year | Not transactional, API was only for admin purposes |
Here is the up-to-date pricing for EmailLabs .
EmailLabs has earned me some real money!
EmailLabs and other transactional email services provide an HTTP
API to send email. HTTP
APIs are accessible by any programming tool and are much easier interface than email servers.
I tried registration to all transactional email providers listed above.
I contacted the Sendinblue (nowadays Brevo) and Tipimail. Weirdly, they did not answer at all. Mailgun looked promising, but their free trial was intentionally misleading.
After signing up for EmailLabs, the solution was relatively easy to understand.
During a few months I have successfully received regular contact requests and blog comments through EmailLabs. I have configured automatic responses for all emails. My business partners also receive a copy of the email for contact requests that concern them.
The process is managed from the website backend, and EmailLabs is responsible of delivering the emails.
After configuring everything it has been smooth sailing. EmailLabs customer service has been helpful and friendly. Even their CEO reached me about my concerns, which is a strong signal about their commitment!
As a conclusion, EmailLabs transactional solution has earned me some real money.
EmailLabs vs MailChimp
Software such as Mailchimp has traditionally been used for email marketing campaigns. Typically, the marketing department implements the campaign on a case-by-case basis and the emails go out to a large number of recipients.
EmailLabs and similar services, on the other hand, send so-called event-based emails programmatically. EmailLabs is used in the background completely automatically as part of the application. Both products send emails, but use case for EmailLabs is slightly different compared to Mailchimp.
Monitoring business critical emails in EmailLabs
It is not only about the emails that you receive. How about spam, typos in email addresses and server errors?
From the report section of EmailLabs you can see the list of hard bounces and spam emails. In case of error, the dashboard would warn about any dropped emails as well.
These functionalities have been the most critical for me. Even one missing email can cost a lot.
EmailLabs is an interesting component for data products
An automated notification to the user after app registration is a great example about transactional email. Another common function could be to send a monthly invoice.
Software developers will benefit the most from EmailLabs. In practice, EmailLabs is a programming interface that allows you to send emails with a few lines of code with basic programming knowledge.
EmailLabs could also be used perfectly in internal tools. You could, for example, generate an automatic report once a month from the online store’s sales data and deliver it to the management’s email.
In the factory line, EmailLabs could send warning to the supervisor when a threshold value is exceeded.
On this website, EmailLabs is responsible of delivering contact forms and comment notifications.
Sending transactional email with EmailLabs API in Python
You can use EmailLabs transactional email API from any programming language. You simply send an HTTP
request to their server. The data such as recipient and email content needs to be in certain format. Also the API token is needed from EmailLabs console to authorize the sending.
My website backend is hosted on Google Cloud, but email sending can be tested also from laptop. Postman is a great alternative for manual testing.
Here you find the documentation to send emails through EmailLabs . Here is an example how to send an Email with EmailLabs in Python.
#Install first:
#pip install requests
import requests
import base64
#Main endpoint to send email
emaillabs_url = "https://api.emaillabs.net.pl/api/new_sendmail"
#App key and secret from EamilLabs console, example:
#1234abcd1234abcd1234abcd1234abcd1234abcd
#Paste as string when testing, but use environment variables in production
app_key = os.environ['EMAILLABS_APP_KEY']
app_secret = os.environ['EMAILLABS_APP_SECRET']
#SMTP account name from EamilLabs console, example:
#1.user.smtp
smtp_account = os.environ['EMAILLABS_SMTP_ACCOUNT']
#Basic authentication data needs to be in specific format
basic_str = f"{app_key}:{app_secret}"
basic_bytes = base64.b64encode(basic_str)
basic_auth = f"Basic {basic_bytes}"
headers = {
"Authorization": basic_auth
}
data={
"smtp_account": smtp_account, #From EmailLabs console
"to": ["[email protected]"]
"from": "[email protected]",
"reply-to": "[email protected]",
"from_name": "Sam Sender",
"subject": "Hello",
"html": "You have a new contact request!"
}
response = requests.post(emaillabs_url, headers=headers, data=data)
#Response code 200 is success
print(response.status_code)
#Response message
print(response.text)
mailbox.eu for traditional email
As mentioned, you still need a traditional mailbox aside of the transactional email. My choice was German mailbox.eu for 3€ / month per user. The plan even includes 5GB of cloud documents and video conference tools, which might become useful.
Google Gmail or Microsoft Outlook would have been simple choices. But I kinda wanted to rebel against the idea that the whole internet is dominated by a few tech giants. What I really needed was a service that focuses solely on email, might be a bit cheaper and embraces security and privacy.
I was considering also free email options, but having the custom domain felt more professional.
The criteria for me:
- Operates in EU under GDPR
- Provides mainly email inbox
- Privacy and security focused
- Multiple free aliases to create SaaS demo users
- Custom domain
- Catch-all email to capture emails to legacy addresses
- Affordable (max 5€/month)
I was also interested about Latvian inbox.eu for 12€ / year, but their alias policy was too limiting.
Write a new comment
The name will be visible. Email will not be published. More about privacy.