Why I Do Not Recommend Fastmail for Primary Email
Ask for an email recommendation on Hacker News or Reddit, and everyone agrees that Google spies on you and Microsoft is clunky,…
Implementing email functionality is far from straightforward. The right solution depends on your specific needs, user base, and resources.
Sending and receiving emails are two separate concerns.
At its core, sending emails typically relies on the SMTP (Simple Mail Transfer Protocol).
Your email hosting company provides you with SMTP credentials:
These are the same credentials you'd use in email clients like Outlook or Thunderbird. In Laravel, you can use these credentials to send emails.
Here's where things get tricky. Most people today use Gmail (or Google Workspace) or Outlook/Office 365. These providers have made developers' lives significantly harder.
The integration process for both these providers is labor-intensive and complex.
Services like Mailgun, Postmark, and SendGrid offer simpler solutions:
Pros:
Cons:
The number of emails you send matters:
Receiving emails typically uses the IMAP (Internet Message Access Protocol). Your email host provides IMAP server credentials, similar to SMTP.
Challenges with IMAP:
The same OAuth2 and app password issues apply here as with sending emails.
Once you've received an email, you need to:
Services like Mailgun and Postmark offer inbound routing:
User setup typically involves email forwarding to a provided address.
EmailEngine is a self-hosted tool that aims to simplify email integration:
Pros:
Cons:
Give Vroni a GitHub issue, bug report, spec, or rough idea. It reads the repo, plans the change, writes code, runs checks, and works toward a review-ready pull request.
Take a look at vroni.com