Node.js:通过自定义SMTP服务器发送电子邮件

5
我在服务器上安装了SMTP服务器,希望我的nodejs应用程序能够使用它发送邮件。这基本上意味着从node js运行以下命令:
echo "Hello" | mail -s "Test" recipient@domain.com

我知道我可以运行这个命令,但是有没有更简洁的方法呢?谢谢。


1
https://nodemailer.com/about/ 这里有用于完成此操作的模块。 - Arun Killu
1个回答

7
如果你想从node.js运行任何CLI命令来发送邮件,则可以使用shelljs从应用程序中运行命令。请参考shelljs
const shell = require('shelljs');
shell.exec('echo "Hello" | mail -s "Test" recipient@domain.com')

但是一个好的方法是使用任何邮件发送包。如果您想从node.js使用自己的SMTP服务器或外部服务器发送电子邮件,则Nodemailer是最好的包。

const nodemailer = require('nodemailer');

// Generate test SMTP service account from ethereal.email
// Only needed if you don't have a real mail account for testing
nodemailer.createTestAccount((err, account) => {

    // create reusable transporter object using the default SMTP transport
    let transporter = nodemailer.createTransport({
        host: 'smtp.ethereal.email',
        port: 587,
        secure: false, // true for 465, false for other ports
        auth: {
            user: account.user, // generated ethereal user
            pass: account.pass  // generated ethereal password
        }
    });

    // setup email data with unicode symbols
    let mailOptions = {
        from: '"Fred Foo " <foo@example.com>', // sender address
        to: 'bar@example.com, baz@example.com', // list of receivers
        subject: 'Hello ✔', // Subject line
        text: 'Hello world?', // plain text body
        html: '<b>Hello world?</b>' // html body
    };

    // send mail with defined transport object
    transporter.sendMail(mailOptions, (error, info) => {
        if (error) {
            return console.log(error);
        }
        console.log('Message sent: %s', info.messageId);
        // Preview only available when sending through an Ethereal account
        console.log('Preview URL: %s', nodemailer.getTestMessageUrl(info));

        // Message sent: <b658f8ca-6296-ccf4-8306-87d57a0b4321@example.com>
        // Preview URL: https://ethereal.email/message/WaQKMgKddxQDoou...
    });
});

3
我会使用nodemailer,它看起来更好。但我不知道shelljs,以后会试一试。 - Florian Burel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接