Tutorial

High-Volume, Low-Cost: The Ultimate Guide to Sending Bulk Email with ListMailer and Amazon SES

Amazon SES is the world's most powerful "email engine," used by Netflix and Airbnb. It's incredibly cheap ($0.10 per 1,000 emails). The problem? The AWS console looks like the cockpit of a Boeing 747.

ListMailer is your flight deck. Here's how to pair them for maximum deliverability and minimum cost.

TL;DR

  • Amazon SES costs $0.10 per 1,000 emails vs. Mailchimp's $300/month for 50k contacts.
  • AWS setup requires identity verification, sandbox exit, and SMTP credential generation.
  • ListMailer bridges AWS complexity with a 60-second connection — no coding required.
  • Add DKIM & SPF records to your DNS for authentication and deliverability.
  • Scale to 1M+ emails using ListMailer's SMTP Rotation + AWS's unlimited capacity.

Why Amazon SES + ListMailer?

Let's do the math.

The Cost Comparison

Provider50k Contacts50k Emails/MonthAnnual Cost
Mailchimp$300/monthIncluded$3,600
AWS SES + ListMailer$0 (no contact fees)~$5/month$60 + $99 tool

You get professional-grade infrastructure without the "SaaS bloat." No monthly subscription tax, just pay-as-you-go sending.

The catch: AWS is built for engineers. ListMailer translates it into a simple "upload CSV, connect SMTP, send" workflow that indie hackers and growth teams can actually use.

Phase 1: Preparing the Engine (AWS Side)

Before you can send a single email, AWS needs to verify you're not a spammer. Here's the checklist.

Step 1: Identity Verification

You must prove you own your domain (or email address) in the AWS Console.

  • Go to AWS SES ConsoleVerified Identities.
  • Click Create Identity and choose Domain (recommended) or Email Address.
  • AWS will provide CNAME records to add to your DNS (Namecheap, Cloudflare, etc.).
  • Wait 5-10 minutes for DNS propagation. AWS will auto-verify once the records are detected.

Pro tip: Verify your domain (not just an email) so you can send from any address on that domain (e.g., hello@yourdomain.com, support@yourdomain.com).

Step 2: Moving Out of the Sandbox

AWS starts everyone in Sandbox Mode. This means:

  • You can only send to verified email addresses (test mode).
  • Daily sending limit: 200 emails.
  • You cannot send to real customers yet.

To exit the sandbox:

  • Go to AWS SES ConsoleAccount Dashboard.
  • Click Request Production Access.
  • Fill out the form (use case: "Transactional/Marketing emails for [your business]").
  • AWS typically approves within 24 hours.

Once approved, your limits jump to 50,000 emails/day (and you can request increases from there).

Step 3: Generating SMTP Credentials

This is where you get the username and password that ListMailer will use to connect.

  • Go to AWS SES ConsoleSMTP Settings.
  • Click Create SMTP Credentials.
  • AWS will generate an IAM user with SMTP access. Download the credentials (you can't retrieve them later).

You'll get:

SMTP Username: AKIA...YOUR_SMTP_USER
SMTP Password: ...YOUR_SMTP_PASSWORD
SMTP Server: email-smtp.us-east-1.amazonaws.com (or your region)
Port: 587 (STARTTLS) or 465 (SSL/TLS)

Save these. You'll paste them into ListMailer in 60 seconds.

Phase 2: Connecting the Flight Deck (ListMailer Side)

Now the fun part: making AWS actually usable.

Step 4: The 60-Second Bridge

In ListMailer:

  • Go to SettingsSMTP Connections.
  • Click Add SMTP.
  • Enter your AWS credentials:
Server: email-smtp.us-east-1.amazonaws.com
Port: 587
Encryption: STARTTLS
Username: AKIA...YOUR_SMTP_USER
Password: ...YOUR_SMTP_PASSWORD

Click Test Connection. If it purrs, you're live.

Step 5: Upload Your CSV and Send

ListMailer uses your CSV headers as Payload/Variables — dynamic placeholders for personalization.

Example CSV

email,first_name,company,pain_point
jane@acme.com,Jane,Acme,manual invoicing
sam@north.io,Sam,North,lead tracking

Example Email Template

Subject: Quick question about 

Hey ,

Saw you're dealing with  — we built a tool that automates this for teams like .

Worth a quick call?

— Henrik

This keeps emails personal and avoids "newsletter vibes" that hurt inbox placement.

The "Secret Sauce" for Deliverability

Connecting AWS is step one. Making sure your emails actually land in the inbox is step two.

DKIM & SPF: The Authentication Layer

AWS handles the heavy lifting, but you must add the CNAME records AWS provides to your DNS.

  • DKIM (DomainKeys Identified Mail): Proves the email came from your domain.
  • SPF (Sender Policy Framework): Lists which servers are allowed to send on your behalf.

In the AWS SES Console, under Verified Identities, you'll see the DKIM records. Copy them to your DNS provider (Namecheap, Cloudflare, etc.).

Example DKIM Record

Type: CNAME
Name: abc123._domainkey.yourdomain.com
Value: abc123.dkim.amazonses.com

Example SPF Record

Type: TXT
Name: @
Value: v=spf1 include:amazonses.com ~all

Once these are in place, AWS will sign your emails cryptographically. Gmail, Outlook, and other providers will trust them more, improving inbox placement.

ListMailer's Role: Unsubscribes and the Global Blacklist

AWS doesn't manage unsubscribes for you. If you keep emailing people who opted out, AWS will throttle or suspend your account.

ListMailer automatically handles:

  • Global Opt-out: If someone unsubscribes, they're blacklisted across all future imports.
  • Complaint tracking: Keeps your AWS complaint rate low (critical for staying in good standing).

This is the "boring" infrastructure that keeps you from burning your AWS account.

Scaling to 1,000,000 Emails

AWS SES has virtually unlimited scale. The bottleneck is usually your sending rate.

SMTP Rotation: Distribute the Load

If you're sending high volume, use SMTP Rotation to spread emails across multiple AWS regions or SMTP relays.

In ListMailer:

  • Add multiple SMTP connections (e.g., us-east-1, eu-west-1).
  • ListMailer will automatically rotate between them to stay under rate limits.

This is how you scale from 10k/day to 1M+/day without getting throttled.

Growth Plan: 3,000 Emails/Hour

ListMailer's Growth Plan supports up to 3,000 emails/hour. Paired with AWS's unlimited capacity, a small business can act like a giant.

No "subscriber tax." No artificial caps. Just infrastructure that scales with you.

Best Practices (No Fluff)

  • Verify your domain (not just an email) for maximum flexibility.
  • Exit the sandbox before sending to real customers.
  • Add DKIM & SPF records to your DNS for authentication.
  • Use plain-text-ish emails for outreach (better inbox placement than heavy HTML).
  • Enforce global opt-out to protect your AWS reputation.
  • Rotate SMTPs when scaling to stay under rate limits.

Common Pitfalls (and How to Avoid Them)

1. Forgetting to Exit the Sandbox

You'll waste hours wondering why emails aren't sending. Check your AWS account status first.

2. Skipping DKIM/SPF Setup

Your emails will technically send, but deliverability will be terrible. Don't skip authentication.

3. Not Monitoring Complaint Rates

AWS will suspend your account if complaint rates go above 0.1%. Use ListMailer's Global Blacklist to stay clean.

Conclusion

Amazon SES is the most cost-effective way to send bulk email at scale. But AWS's complexity keeps most teams stuck on expensive SaaS tools.

ListMailer bridges that gap. You get AWS's power and pricing without the engineering overhead. Upload a CSV, connect your SMTP, personalize with variables, and send — all while staying under $100/year for the tool.

No subscriber tax. No artificial limits. Just infrastructure that works.

Ready to pair AWS SES with a simple interface?

Connect Amazon SES (or Google Workspace, Microsoft 365, Mailjet) in 60 seconds. Upload your CSV, map variables, and send with ListMailer's SMTP rotation and global opt-out protection.

Start for Free