Skip to content

Instantly share code, notes, and snippets.

@jrichardsz
Last active February 10, 2024 00:58
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jrichardsz/397881321786f726119eee9dd912af7e to your computer and use it in GitHub Desktop.
Save jrichardsz/397881321786f726119eee9dd912af7e to your computer and use it in GitHub Desktop.
smtp mail snisppets mailx nodejs docker fake-smtp

sendemail

sudo apt install sendemail -y

run

SERVER="localhost:1025"
FROM="sender@company.com"
TO="recepient@company.com"
SUBJ="Some subject"
MESSAGE="Some message"
CHARSET="utf-8"

sendemail -f $FROM -t $TO -u $SUBJ -s $SERVER -m $MESSAGE -v -o message-charset=$CHARSET

-a /tmp/foo.zip for attachments


mailx

yum install mailx

sudo yum install mailx -y

or

sudo apt install mailutils -y

one line

echo "The mail content" | mailx -v -s "acme-api [DEV] low level error" \
-S smtp-use-starttls \
-S ssl-verify=ignore \
-S smtp-auth=login \
-S smtp=smtp.office365.com:587 \
-S from="jane@doe.com" \
-S smtp-auth-user=jane@doe.com \
-S smtp-auth-password=changeme \
-S ssl-verify=ignore \
-S nss-config-dir="/etc/pki/nssdb/" \
patrick@doe.com

references

run

docker run -d -p 1025:1025 -p 1080:1080 haravich/fake-smtp-server:20231015

docker source: https://github.com/haravich/fake-smtp-server

variables

export from=jane@doe.com
export to=kurt@weller.com

test

var nodemailer = require('nodemailer');

var transporter = nodemailer.createTransport({
    host: 'localhost', // Office 365 server
    port: 1025, // secure SMTP
    secure: false, // false for TLS - as a boolean not string - but the default is false so just remove this completely
    tls: {
        ciphers: 'SSLv3',
        rejectUnauthorized: false
    }
});

var mailOptions = {
    from: process.env.from,
    to: process.env.to,
    subject: 'Sending Email using Node.js',
    text: 'That was easy!'
};

(async function() {
    try {
        var info = await transporter.sendMail(mailOptions);
        console.log('Email sent: ' + info.response);
    } catch (error) {
        console.log(error);
    }

})();

result

image

Endpoints

Get all mails

http://localhost:1080/messages

[    
    {
        "id": 3,
        "sender": "<sender@company.com>",
        "recipients": [
            "<recepient@company.com>"
        ],
        "subject": "Some subject",
        "size": "701",
        "created_at": "2024-02-01T18:01:03+00:00"
    },
    {
        "id": 4,
        "sender": "<sender@company.com>",
        "recipients": [
            "<recepient@company.com>"
        ],
        "subject": "Some subject",
        "size": "108542947",
        "created_at": "2024-02-01T18:06:38+00:00"
    }
]

Get mail by id

http://localhost:1080/messages/4.json

Each mail has an id: 4 in this example

{
    "id": 4,
    "sender": "<sender@company.com>",
    "recipients": [
        "<recepient@company.com>"
    ],
    "subject": "Some subject",
    "size": "108542947",
    "type": "multipart/mixed",
    "created_at": "2024-02-01T18:06:38+00:00",
    "formats": [
        "source",
        "plain"
    ],
    "attachments": [
        {
            "cid": "65bbddaec1b59_17f814225@0b2e305d16e4.mail",
            "type": "application/octet-stream",
            "filename": "input.mp4",
            "size": 79319178
        }
    ]
}

run

docker run -d -p 1025:1025 -p 1080:1080 reachfive/fake-smtp-server

source: https://github.com/ReachFive/fake-smtp-server

This option has useful endpoints

variables

export from=jane@doe.com
export to=kurt@weller.com

test

var nodemailer = require('nodemailer');

var transporter = nodemailer.createTransport({
    host: 'localhost', // Office 365 server
    port: 1025, // secure SMTP
    secure: false, // false for TLS - as a boolean not string - but the default is false so just remove this completely
    tls: {
        ciphers: 'SSLv3',
        rejectUnauthorized: false
    }
});

var mailOptions = {
    from: process.env.from,
    to: process.env.to,
    subject: 'Sending Email using Node.js',
    text: 'That was easy!'
};

(async function() {
    try {
        var info = await transporter.sendMail(mailOptions);
        console.log('Email sent: ' + info.response);
    } catch (error) {
        console.log(error);
    }

})();

result

image

var nodemailer = require('nodemailer');
var transporter = nodemailer.createTransport({
host: 'smtp.office365.com', // Office 365 server
port: 587, // secure SMTP
secure: false, // false for TLS - as a boolean not string - but the default is false so just remove this completely
auth: {
user: process.env.username,
pass: process.env.password
},
tls: {
ciphers: 'SSLv3'
}
});
var mailOptions = {
from: process.env.from,
to: process.env.to,
subject: 'Sending Email using Node.js',
text: 'That was easy!'
};
(async function() {
try {
var info = await transporter.sendMail(mailOptions);
console.log('Email sent: ' + info.response);
} catch (error) {
console.log(error);
}
})();
name host port secure tls_ciphers user/password
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment