Skip to content

A NodeJS script that acts as a SMTP listen server. Accepts all emails, and emits them both as an EventEmitter and through a socket.

License

Notifications You must be signed in to change notification settings

deysuman/Smtp-Listener

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

smtp-listener

A NodeJS script that acts as a SMTP listen server. Accepts all emails, and emits them both as an EventEmitter and through a socket.

suman made-with-nodejs

Usage (single access)

If only 1 script needs to receive mails:

const SMTPServer = require("smtp-listener").Server;
const server = new SMTPServer(25 /* port */);
server.on("test@example.com", (mail)=>{
    ...
});

Usage (multi access)

If multiple scripts need to receive mails, create a symlink at /var/dev/smtp-listener/ pointing to the working directory, then create a symlink at /etc/systemd/system/smtp-listener.service pointing to ./service/smtp-listener.service. Finally run sudo systemctl start smtp-listener. This starts the server and keeps it running should it crash.

If you aren't running systemd, do the equivalent on your system.

Then in your scripts do

const SMTPClient = require("smtp-listener");
const client = new SMTPClient();
client.on("test@example.com", ()=>{
    ...
});

Mail object

All listeners receive a single response, a Mail object. This is simply the email parsed by Nodemailer's Mailparser. See their documentation for details.

Socket

If you need access to mails from non-JS code (or you don't want to use SMTPClient), you can instead listen to the UNIX/Windows socket (default UNIX location: /tmp/app.smtp-listener).

The server emits emails as UTF8-encoded JSON to all clients, using node-ipc.

About

A NodeJS script that acts as a SMTP listen server. Accepts all emails, and emits them both as an EventEmitter and through a socket.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published