On their own, ChatGPT and Claude can't send bulk email. They write good emails, but they have no mailbox, no list and no sending infrastructure. Try to use the chat window as a bulk sender and it breaks in five places: getting the list in, the message limits, the copy, the sending itself and deliverability. The fix is to connect the chat to a real sending service. Then the AI writes and you decide, while the service handles lists, personalization, pacing, unsubscribes and bounces.

We built that connection at OwnMailServer, so this post goes through each problem and what fixes it, including what we chose not to do.

Why people want to send bulk email from a chat

The appeal is real. A small business owner can type "write our November newsletter: two new products, the holiday shipping deadline, a 10% code" and get a decent draft in seconds. Next comes "now send it to our customers," and that's where the chat runs out of road.

The usual workarounds:

  • Paste the draft into Gmail or Outlook and BCC the list.
  • Paste a CSV into the chat and ask for one email per row, then copy each one out.
  • Ask the AI to write a Python script that loops over the CSV and calls an email API.

The first two break at any real volume. The third works, but now you're maintaining code, an email provider account and a bounce handler, and you've lost the "just ask" part that made the chat appealing.

Problem 1: The chat window isn't a database

Chat apps are built for conversation, not for data processing. Pasting hundreds of rows means formatting mistakes, truncated pastes and starting over when a session ends. The next time you send, the list is gone and you paste it all again.

The fix: keep the list in the sending service, not the chat. With our connector you paste the list, or a CSV export from your shop or CRM, once. Claude adds it to a contact list, up to 500 contacts per step and up to 100,000 per list. Invalid addresses are reported and skipped. After that you refer to the list by name ("send it to Customers"), and the chat never has to hold the data again. Adding someone to a list doesn't email them.

Problem 2: Message caps and one-email-per-row

Asking an AI for 2,000 personalized emails means 2,000 generations. You hit usage limits, the session slows down, and somewhere around row 400 the model starts repeating itself or skipping rows.

The fix: one draft, filled in per person by the server. The AI writes one email and you approve it. Fields like {{first_name}}, {{last_name}} and {{email}} are filled in for each copy when it's sent, with a fallback ({{first_name|there}}) for contacts without a name. The chat does one generation, and the sending service does the 2,000 copies. A list of 50 costs the chat the same effort as a list of 50,000.

To be clear about what that doesn't do: we fill in contact fields. If you want a unique AI-written opening line for every person, that's a different, slower workflow. It's fine for a dozen high-value emails you check by hand, and a bad idea for a newsletter.

Problem 3: "AI slop" and made-up details

Left alone, a model drifts toward "I hope this email finds you well" and "in today's fast-paced landscape." Readers spot it, ignore it and sometimes report it as spam. Worse, a model writing about a specific person can invent facts: a promotion that didn't happen, a product they never bought.

The fix: a human reads the actual email before it goes anywhere. In our connector, a new campaign is always saved as a draft. Claude shows you the subject, sender and body in the chat. You ask for edits ("shorter subject", "less salesy", "drop the second paragraph"), then ask for a test, and up to 5 copies marked "[Test]" go to your own inboxes. You check it on a phone and a laptop, and nothing reaches the list until you say "send it" or "send it Tuesday at 9am."

A single reviewed draft is also what makes your results mean something. When you ask "how did it do?", every recipient got the same email, so the open and click rates actually tell you whether it worked.

Problem 4: A chat can't actually send

Even a perfect draft has to leave through something. A personal mailbox has daily sending limits and no per-person unsubscribe link. It also doesn't stop you from mailing an address that bounced last week. Gmail and Yahoo require one-click unsubscribe from bulk senders, so a big BCC blast from your everyday address risks the mailbox you use for real work.

The fix: a real sending pipeline behind the chat. When you send a campaign through OwnMailServer:

  • Each person gets their own copy, so nobody sees the other recipients.
  • Every copy has a one-click unsubscribe link and the List-Unsubscribe headers (RFC 8058) that make Gmail's and Yahoo's Unsubscribe button work.
  • Anyone who unsubscribed, hard-bounced or marked an earlier email as spam is skipped automatically.
  • Copies go out as fast as your account's daily limit allows. If the list is bigger than that, the campaign waits and carries on by itself instead of failing.

Problem 5: Deliverability is most of the work

Writing the email is the easy part. Whether it reaches the inbox depends on things a chat can't see: whether your domain is authenticated, how new your sending IP is, how fast you send and how many recipients complain.

We learned this first-hand. On our own first day of sending, two near-identical test emails went to Gmail from two new domains. Both passed SPF, DKIM and DMARC. One landed in the inbox, the other in spam. New domains have no reputation yet, and only gradual, engaged sending builds it.

The fix: guardrails that run whether or not anyone remembers them.

Risk What the platform does
Missing SPF, DKIM or DMARC Claude can check your domain and tells you the exact record to publish for anything missing.
New IP or domain sending too much too soon Automatic warm-up: the daily limit starts at a few hundred recipients and rises about 25% after each clean day.
An old list full of dead addresses Hard bounces are suppressed for good. Sending pauses automatically if hard bounces pass 5% in 24 hours.
People reporting it as spam Complaints are suppressed. Sending pauses automatically above 0.3% complaints in 24 hours, with a warning at 0.1%.
Getting onto a blocklist Blocklists are checked hourly, and you get a daily summary.

Our guide to why AI-written emails go to spam goes deeper on what filters actually judge. Short version: it's mostly your reputation and your recipients' reactions, not whether a model wrote the copy.

What about the AI sending things you didn't approve?

Fair worry. Here's how the connector limits it:

  • You choose on the Allow screen. When you connect, "Send email" is a checkbox. Untick it and the AI can only read your results.
  • Drafts first. A campaign is never sent on creation. You say send, or you schedule it.
  • Some things never happen in chat. API keys, webhook signing secrets, removing a domain, billing and lifting a bounce or complaint block stay in the dashboard.
  • Recipient addresses are masked in the AI's answers (j***@example.com) unless you asked about that address.

When this isn't the right tool

We'd rather you pick the right tool:

  • Cold outreach to people who never signed up. We vet every account and don't allow bought, rented or scraped lists. Writing the email with AI doesn't change that.
  • Signup forms, a visual editor or multi-step automations. We don't have them. If you depend on those, a marketing platform fits better; our Mailchimp alternative page compares the two honestly.
  • Ten people, once. Just send it from your own mailbox.

How the workflow looks end to end

  1. Connect OwnMailServer in Claude (from the connector directory, or as a custom connector at https://api.ownmailserver.com/mcp) and sign in.
  2. "Create a list called Customers and add these people: …"
  3. "Draft our November newsletter to Customers. Start with Hi {{first_name|there}}."
  4. "Send me a test." Read it and ask for changes.
  5. "Send it Tuesday at 9am."
  6. A few days later: "How did the newsletter do? Which addresses bounced?"

The step-by-step version is in how to send an email campaign with Claude, and the ChatGPT version is in our ChatGPT email guide. Asking about results is covered in email campaign reporting with AI.

What it costs

The Claude connector is included with pay-as-you-go sending: $0.20 per 1,000 emails, a $10 monthly minimum that covers the first 50,000, and a $10 one-time setup fee. We're in early access and review every signup, usually within one business day. Nothing is charged before approval. Details are on the pricing page.