I Wasted 100 Hours on This Problem (Here's What I Learned)
Why I Should Have Used AWS SES from Day One
I made a huge mistake that cost me 100 hours of work. And the worst part? I could have avoided it from the start.
It Started So Simple
I wanted to build a small app. Nothing fancy. Users would enter their email, get a verification link, click it, and download a zip file. Easy, right?
My brain went straight to what seemed like the obvious choice: "I'll just set up my own email server. How hard could it be?"
All I needed was a straightforward email. Send it to the user, they click 'verify,' and boom, they get their download. I thought I was being smart by doing it myself.
I figured I'd create a free Google account, set up SMTP, and be done in a weekend. I love a good challenge, and this seemed fun.
But I was walking straight into a trap. A trap made of spam filters and email throttling.
The Dangerous First Success
After that weekend, I had version 1 up and running. And that was the most dangerous part - it tricked me into thinking I had won.
Here's what I did:
Set up my Google account for SMTP connections
Created an app password
Wrote Python code using smtplib to send emails
Tested it with a few of my email addresses.
Emails sent. Emails received. Everything looked perfect.
So I went live. My app started sending real emails to real users. At first, everything seemed fine. No complaints. No problems.
Then things started falling apart.
The Cracks Begin to Show
It started small. One user messaged me: "Hey, I never got my confirmation email."
No big deal, I thought. It probably landed in spam.
Then another: "Your link doesn't work."
And another: "How do I download the files?"
I checked my logs. My code was sending the messages just fine. So where were they going?
Was my free Gmail account broken? Were other email providers blocking my messages? I had no idea.
Going Down the Rabbit Hole
Like any stubborn developer, I doubled down. I was going to figure this out.
Every test email made me more confused:
Send an email to myself
Refresh my inbox
Check spam folder
Swear under my breath
What was going on?
I didn't realize how much time I was spending. It wasn't just the hours configuring DNS settings. It was the mental drain. Every time I wanted to work on new features, I got pulled back into this email mess.
I wasn't building anymore. I was fighting spam filters.
And my users were getting frustrated, too.
The Lightbulb Moment
After all that fighting, something clicked. I didn't need to be an email expert. I just needed emails that worked so I could focus on building my actual product.
That's when I decided to try AWS Simple Email Service (SES).
I was nervous at first. Would setting it up be complicated? Would it cost too much? (Spoiler: it's really cheap.)
But I was desperate for something that just worked.
The Solution That Actually Worked
So I took the plunge:
Set up SES with a verified domain
Added all the DNS records (SPF, DKIM, everything)
Updated my code to use the SES endpoint
Sent my first test email
I refreshed my inbox. And there it was sitting right in my primary inbox, clean as could be.
No spam folder. No warnings. Just delivered.
I tested again and again. Every single time: success.
Now SES handles all the hard stuff. Spam detection, reputation management, IP warmup, compliance, and best of all, I don't have to think about any of it.
I send emails, and they arrive.
What I Was Really Fighting
Looking back, I see what I was really clinging to:
Control. I wanted to have complete control over every aspect of my system.
Pride. I thought building it myself made me a better developer.
Fear. I worried about depending on someone else's service.
But here's the thing, it didn't matter how I sent the email. What mattered was that users got it. That they had a good experience. That I could focus on what I do best.
The Real Lesson
Sometimes the smartest thing you can do isn't write clever code or optimize performance.
Sometimes it's changing your code so someone else handles the problem you don't need to own.
When you're stuck in the middle of a problem, it's easy to think you need to work harder or fight through everything yourself.
But sometimes the most powerful thing you can do is step back and ask:
Is this really where I should spend my energy?
Is there a tool that can handle this better than I can?
That one code change, switching from Google SMTP to AWS SES, did more than save me time, it also significantly improved my email delivery. It reminded me why I code in the first place: to build things people love, not to reinvent the wheel.
Please don't make my mistake.
If there's a service that can handle your problem better than you can, use it. Your time is too valuable to waste on problems someone else has already solved.
Cheers friends,
Eric Roby
Find me online:
LinkedIn / YouTube / Threads
If you enjoyed this read, please share with one person or restack it. This is the absolute best compliment I could receive.
This story nails it, control and pride often cost more than they give.