Ethereal

Ethereal is a fake SMTP service, mostly aimed at Nodemailer and EmailEngine users (but not limited to). It's a completely free anti-transactional email service where messages never get delivered.

Use it as a safe email sandbox for development: generate a throwaway SMTP account right from Nodemailer, send an email using that account just as you would with any other SMTP provider and preview the caught message here — no emails are actually delivered and no real inbox is ever spammed.

EmailEngine

IMAP/POP3

Ethereal addresses act as real IMAP/POP3 accounts. You can access sent and received messages using your favorite email client, whatever that happens to be.

Inbound

Accounts created by EmailEngine subscribers also receive external email. For public accounts inbound is disabled and messages sent to these addresses bounce. Learn more

Automatic

All account registration can be handled by the Nodemailer API. If you have lost authentication details for a previous account, then just create a new one.

How it works

  1. Step 1

    Create a test account

    Call nodemailer.createTestAccount() or click the button above — you get SMTP credentials instantly, no signup or email verification required.

  2. Step 2

    Send email over SMTP

    Point your app at smtp.ethereal.email and send to any recipient address, real or made up. Every message is caught; nothing is ever delivered.

  3. Step 3

    Preview the message

    Open the preview URL from getTestMessageUrl(), browse the mailbox here, or read messages back over IMAP/POP3.

Messages caught in the last 15 days

Self-contained example

ethereal.js Copy to clipboard
// Use at least Nodemailer v4.1.0
const nodemailer = require('nodemailer');

// Generate SMTP service account from ethereal.email
nodemailer.createTestAccount((err, account) => {
    if (err) {
        console.error('Failed to create a testing account. ' + err.message);
        return process.exit(1);
    }

    console.log('Credentials obtained, sending message...');

    // Create a SMTP transporter object
    let transporter = nodemailer.createTransport({
        host: account.smtp.host,
        port: account.smtp.port,
        secure: account.smtp.secure,
        auth: {
            user: account.user,
            pass: account.pass
        }
    });

    // Message object
    let message = {
        from: 'Sender Name <sender@example.com>',
        to: 'Recipient <recipient@example.com>',
        subject: 'Nodemailer is unicode friendly ✔',
        text: 'Hello to myself!',
        html: '<p><b>Hello</b> to myself!</p>'
    };

    transporter.sendMail(message, (err, info) => {
        if (err) {
            console.log('Error occurred. ' + err.message);
            return process.exit(1);
        }

        console.log('Message sent: %s', info.messageId);
        // Preview only available when sending through an Ethereal account
        console.log('Preview URL: %s', nodemailer.getTestMessageUrl(info));
    });
});
output Copy to clipboard
Credentials obtained, sending message...
Message sent: <b658f8ca-6296-ccf4-8306-87d57a0b4321@example.com>
Preview URL: https://ethereal.email/message/WaPu7QsssRQCysQBWaPu7nSCFzXO....