SMTP Setup

Mailclutch is a plain SMTP server. If your stack can send mail, it can send to Mailclutch — starting with the working credentials below.

Your sandbox

Live credentials, filled into every snippet on this page as soon as they arrive.

Host
smtp.mailclutch.com
Port
587
Username
mc_0000000000000000
Password
pw_0000000000000000
  • Ports 25, 465, 587, 2525 all work — STARTTLS everywhere except 465, which is implicit TLS.
  • The inbox keeps what it catches for 24 hours; nothing is ever delivered onward.

Credentials

Every snippet on this page already carries the pair above, so you can paste one in and send. In your own code those two values belong in environment variables like anything else — the literals here are only so nothing stands between you and the first captured email.

SMTP credentials
Hostsmtp.mailclutch.com
Port587 (recommended), 25, 465 or 2525
UsernameYour sandbox username, or a project's once you have an account
PasswordThe matching password
EncryptionSTARTTLS on 25 / 587 / 2525, implicit TLS on 465 — TLS 1.2 minimum

Use 587 unless something in your network blocks it. Port 2525 is the usual fallback when an outbound firewall or a PaaS blocks the standard mail ports, and 465 is there for clients that only speak implicit TLS.

Credentials pick the inbox, not the address on the envelope: recipients are never contacted, so you don't need to sanitise the addresses your application uses. Sending to real.customer@example.com from staging is safe.

Once you have an account, credentials are per project rather than per account — each project has its own username and password, so one client's staging environment can never write into another's inbox.

The snippets below are the short form. For a stack-by-stack walkthrough — what to install, the whole config block and a test message to send — see the framework guides.

Laravel

Set the standard mail variables.

.env
# .env
MAIL_MAILER=smtp
MAIL_HOST=smtp.mailclutch.com
MAIL_PORT=587
MAIL_USERNAME=mc_0000000000000000
MAIL_PASSWORD=pw_0000000000000000
MAIL_ENCRYPTION=tls

Symfony

.env.local
# .env.local
MAILER_DSN=smtp://mc_0000000000000000:pw_0000000000000000@smtp.mailclutch.com:587

Node.js (Nodemailer)

mailer.js
import nodemailer from 'nodemailer';

const transporter = nodemailer.createTransport({
  host: 'smtp.mailclutch.com',
  port: 587,
  secure: false, // STARTTLS is negotiated after connecting
  auth: {
    user: 'mc_0000000000000000',
    pass: 'pw_0000000000000000',
  },
});

await transporter.sendMail({
  from: 'noreply@example.com',
  to: 'user@example.com',
  subject: 'Welcome!',
  html: '<h1 className="mb-3 text-4xl tracking-[-0.025em]">Hello World</h1>',
});

Python (smtplib)

send.py
import smtplib
from email.mime.text import MIMEText

smtp = smtplib.SMTP('smtp.mailclutch.com', 587)
smtp.starttls()
smtp.login('mc_0000000000000000', 'pw_0000000000000000')

msg = MIMEText('<h1 className="mb-3 text-4xl tracking-[-0.025em]">Hello World</h1>', 'html')
msg['Subject'] = 'Welcome!'
msg['From'] = 'noreply@example.com'
msg['To'] = 'user@example.com'

smtp.send_message(msg)
smtp.quit()

Ruby on Rails (Action Mailer)

config/environments/staging.rb
# config/environments/staging.rb
config.action_mailer.smtp_settings = {
  address: 'smtp.mailclutch.com',
  port: 587,
  user_name: 'mc_0000000000000000',
  password: 'pw_0000000000000000',
  authentication: :plain,
  enable_starttls_auto: true
}

PHP (PHPMailer)

send.php
use PHPMailer\PHPMailer\PHPMailer;

$mail = new PHPMailer(true);
$mail->isSMTP();
$mail->Host = 'smtp.mailclutch.com';
$mail->SMTPAuth = true;
$mail->Username = 'mc_0000000000000000';
$mail->Password = 'pw_0000000000000000';
$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
$mail->Port = 587;

$mail->setFrom('noreply@example.com');
$mail->addAddress('user@example.com');
$mail->Subject = 'Welcome!';
$mail->Body = '<h1 className="mb-3 text-4xl tracking-[-0.025em]">Hello World</h1>';
$mail->isHTML(true);

$mail->send();

Watch it land

Whichever snippet you ran, the message is in the sandbox those credentials belong to — rendered HTML, plain text, raw source, headers, attachments, and the SPF, DKIM and DMARC verdicts. It updates live.

Awaiting your email

Send from any address; it stops here rather than going onward. The inbox keeps what it catches for 24 hours.

Troubleshooting

Troubleshooting: symptoms and their usual cause
SymptomUsual cause
Authentication failsAccount credentials used instead of the sandbox or project SMTP credentials — or a pair that has expired. Take a new one from the card above.
TLS handshake failsImplicit TLS (secure: true) pointed at 587. Use 465 for that, or keep 587 with STARTTLS.
Connection times outOutbound mail ports blocked by the host or PaaS. Try 2525.
Nothing appears in the inboxThe mailer is still queueing — run the queue worker, or send synchronously.
Emails land in the wrong projectTwo environments share one set of project credentials. Give each its own project.