Neuctra Mailer
Bring your own SMTP

SendemailfromanyappwithyourownSMTP.

Connect the Gmail, Zoho or SES account you already have. Then send from your frontend or backend with one SDK call, grow email lists, send to them, and welcome new subscribers from one dashboard.

  • No mail server to run
  • Browser and Node.js
  • Set up in about two minutes
Try it: send a test emailLive demo
SubjectYour order #1042 has shipped

Tip: remove the .com to see how a failed email looks.

Your app
Neuctra Mailer
Your SMTP

Press send to watch the trip

Sent in this demo

Nothing yet. Press Send email.

    Works with the mail account you already have

    • Gmail
    • Google Workspace
    • Zoho Mail
    • Amazon SES
    • Outlook
    • Microsoft 365
    • Brevo
    • Mailgun
    • Any SMTP server
    SDK call to send

    0

    SDK call to send

    mailer.send() from any JavaScript app

    Recipients per email

    0

    Recipients per email

    Across to, cc and bcc

    AES-GCM encryption

    0-bit

    AES-GCM encryption

    For SMTP passwords and API keys

    SDK dependencies

    0

    SDK dependencies

    Browser, React, Next.js and Node 18+

    How it works

    Live in three steps

    No mail server to run and no template language to learn. Bring the SMTP account you already have.

    1. 01

      Create a service

      One service per app. Name it and you get a service ID and an API key, ready to copy.

      service_7f3a · My Shop

    2. 02

      Connect your SMTP login

      Enter the host, port and login from your mail provider, then send a test email to confirm it works.

      smtp.gmail.com : 465 · Verified

    3. 03

      Call mailer.send()

      Install @neuctra/mailer and send from a React form, an API route or a background job.

      npm install @neuctra/mailer

    Features

    Built for the moment something goes wrong

    Sending is the easy part. Keeping your key and your SMTP account safe is where it counts.

    Limits that make a copied key useless

    A key in browser code can be copied, and scripts can fake the website. Rate limits, allowed recipients and a captcha stop it from being used to spam through your SMTP account.

    Emails per minute
    30 per service, for both keys
    Emails per day
    500 keep it under your provider's limit
    Allowed recipients
    [email protected] a copied key can't email anyone else
    Captcha
    Cloudflare Turnstile stops bots on your forms
    Server key
    nm_sk_... refused from browsers

    Keys locked to your websites

    List the sites allowed to use your public key. Other websites are refused.

    https://myshop.com
    https://admin.myshop.com
    http://localhost:3000
    https://other-site.com403

    Rotate keys in one click

    Leaked a key? Make a new one. The old key stops working right away.

    nm_7f3a91c2e8b0…47f3

    Try it: press Rotate.

    Passwords encrypted at rest

    SMTP passwords and API keys are encrypted with AES-256-GCM and never sent back to the browser.

    SMTP password••••••••••

    Errors that say what to fix

    Wrong password or blocked port? You get a plain hint next to the raw SMTP error.

    SMTP login failed

    Check the username and password. Gmail needs an App Password.

    535-5.7.8 Username and Password not accepted

    Email marketing

    More than transactional email

    The same SMTP account that sends your receipts can reach your subscribers. Lists, templates, sending and welcome emails are built in.

    Grow lists straight from your forms

    Create a list in the dashboard, then add people from your signup or newsletter form with one SDK call.

    • mailer.subscribe() and mailer.unsubscribe()
    • Add and edit contacts in the dashboard
    • Duplicate signups are handled for you

    Newsletter

    Subscribed
    await mailer.subscribe({
      listId, email: "[email protected]", name: "Jane"
    });
    For developers

    Same SDK in the browser and on the server

    Send a contact form straight from React, or an order email from your API. Every call works the same way.

    npm install @neuctra/mailer
    • Browser, React, Next.js and Node 18+
    • No dependencies
    • TypeScript types included
    • Text, HTML, cc, bcc and reply-to
    What each error status means
    400Something is wrong with the email itself
    401Wrong API key, service ID or name
    403Service paused, or website not allowed
    502Your SMTP server refused it, and why
    app/contact/form.jsx
    1const mailer = new NeuctraMailer({
    2  serverUrl: process.env.NEXT_PUBLIC_MAILER_URL,
    3  serviceId: process.env.NEXT_PUBLIC_MAILER_SERVICE_ID,
    4  serviceName: process.env.NEXT_PUBLIC_MAILER_SERVICE_NAME,
    5  apiKey: process.env.NEXT_PUBLIC_MAILER_API_KEY,
    6});
    7
    8async function handleSubmit(form) {
    9  await mailer.send({
    10    to: "[email protected]",
    11    replyTo: form.email,
    12    subject: `New message from ${form.name}`,
    13    text: form.message,
    14  });
    15}
    Use cases

    One service for every email your app sends

    From a single contact form to a growing newsletter, it all goes out through the account you trust.

    FAQ

    Questions, answered

    Something else? Create an account and try it with a test email. It takes about two minutes.

    Ready when you are

    Send your first email today

    Create a service, add your SMTP login and send a test. It takes about two minutes.