What are the best practices used to receive emails

Hosting a Meteor (or NodeJS) app is different from a basic PHP website. Before, in PHP, I was used to just move all files with FTP to a shared hosting which provided a few e-mails addresses and SMTP settings I could use for free.

Now with Meteor, everything is hosted on a different service. For example, I am building a quite small webapp (around 500 users max), so I am using a Digital Ocean droplet to host it. But I don’t have any “free” e-mails server now.

I know I can use things like MailChimp for newsletters, sparkpost for transactional e-mails, but I was wondering what are the best practices used for receiving emails.

So what mailbox are you using for small app (just a few hundred of users) that I can linked to my domain so I get a e-mail addresse like contact@my-domain.com ?

I use EasyEngine to set up my webservers and it has the option of installing a mailserver as well so you can receive email using the same server. Even gives you a web interface using Roundcube.

Generally speaking, I still pay for and use external email services as hosting your own is often a PITA

most any transactional mail service provides webhooks for inbound emails, look at Mandrill and SendGrid

But it will just POST inbound e-mails to an API endpoint. Then I need to build something that handle it. I won’t be able to just receive those mails in a traditional mailbox like outlook for example right?

If you want to use your own domain and receve emails this has nothing to do with your tech stack nor the number of users of your app : you just have to open a Zoho account (free) or use Google G suite (starting at 5$/user/month) among many other services.

Comparaison of both services here : https://webeminence.com/zoho-mail-vs-google-g-suite-email/

I have setup my Meteor app to send emails through Mailgun and I use zoho as I would do with outlook to send and receve emails with my own domain.

Hope it helps,

2 Likes

I thought you wanted your app to ingest them. If you don’t need to process them programmatically you could just use G Suite. I stopped running my own mail server 10 years ago. Not worth the headache. Our apps send outbound email via mandrill using our domain (and handlebars templates). We setup HelpScout to receive customer emails so the whole team has access to them, but they could just as easily go a gmail mailbox (or both!)

1 Like

Thanks for your answers, despite my bad english! :grin:

So basically I need three external services to handle e-mails : one for bulk e-mails (eg MailChimp), one for transactional e-mails (eg SparkPost) and one last for receiving e-mails (eg G suite) right?

One last question: why isn’t there one service handeling bulk, transactional and mailbox at the same time?

I love using Node, Meteor, React… But now I have to explain to my client that we are going to use one hosting service for the app, another one for database, three others for emails… How do you handle it? How do you explain it to your clients? For instance, mine has a few very basic knowledges in develoment, so he thinks we are just going to buy a simple shared hosting and upload a bunch of HTML, CSS and PHP files to the server via FTP. I am afraid he panics and hire another developer for the job because of that (he asked quotations to others developers for this project).

Even if you have the all-in-one hosting, you definitely don’t want to do bulk email from it. So that extra service is required in either situation.
If you go with a Mailchimp subscription, you get access to Mandrill, their transactional email service, under the same plan, so that’s another down.

Now you’re just at two email services, bulk and inbox, which is basically a requirement of any type of hosting

For small apps (90% of all web apps), it’s fine to run the database on the webserver so you can bundle that as well. Otherwise you can install it to a separate VM at Digital Ocean, keeping the service count for hosting to one.

Now you’ve got hosting, email, and bulk email. In my experience the vast majority of companies will already have their own email set up, so that’s one less service to worry about.

Now you’re down to exactly the same number of accounts and subscriptions as generic all-in-one shared hosting plans

1 Like

You’re right, thanks. I will think about all of that!

1 Like

You’d have the same challenge with Ruby on Rails, ColdFusion or any other framework.

Every company needs email and G Suite is a great value because you get not only email service (for $4.17 per user per month–billed annual) each user also gets access to cloud storage (Google Drive), Docs, Sheets, Sites and others groupware services.

G Suite isn’t designed for transactional emails, they have per account sending limits (2K daily) which are high enough for most human use-cases but not for application generated emails–the sum of all welcome emails, password reminders, order emails, shipping confirmation emails, and all the other types of messages an application may generate.

Bulk email is another a special case. While you could technically send your bulk emails via a transactional service like Mandrill (which is what MailChimp is doing under the hood), you want a different set of tools for template creation, list management, list management, drip-campaigns, and customer-behavior generated emails.

My company uses G Suite, MailChimp, and Mandrill, however, we are planning to replace Mandrill with SendGrid during a rewrite of our app.

If you want to save yourself the money/overhead using third-party services that really just translate SMTP to HTTP, then you can also just run a small SMTP server right inside your meteor app. I’ve recently been successful doing just that using https://nodemailer.com/extras/smtp-server/ which also has a module for mail parsing. That way you get the email as a nice JSON object. You will, however, need to set an MX DNS record to direct inbound email to your server.

I use Mailgun + Gmail. It’s free up to 10k emails/mo. and great for small sites.

Can use for inbound mail (Gmail is your mailbox), outbound (from Gmail), and transactional from your site (SMTP or API).

Here’s a writeup on the setup process:
https://medium.com/@onedurr/how-to-set-up-custom-email-addresses-on-your-web-site-for-free-afd700de5e9c

I have 10+ domains set up this way, any questions let me know.

For bulk promotional mail, you can use MailChimp’s free tier (their transaction platform, Mandrill, is not included in the free tier).

3 Likes

Very interesting, I’ll have a look at your medium article!