Node.js 通过nodemailer发送电子邮件

Node.js 通过nodemailer发送电子邮件,node.js,nodemailer,Node.js,Nodemailer,我试图通过nodemailer发送电子邮件,但收到错误-TypeError:无法读取未定义的属性“method”。似乎未定义sendMail函数。有什么建议吗? 另外,此代码适用于AWS上托管的聊天机器人 var nodemailer = require('nodemailer'); var smtpTransport = require('nodemailer-smtp-transport'); module.exports = function someName() { // creat

我试图通过nodemailer发送电子邮件,但收到错误-
TypeError:无法读取未定义的属性“method”
。似乎未定义
sendMail
函数。有什么建议吗? 另外,此代码适用于AWS上托管的聊天机器人

var nodemailer = require('nodemailer');
var smtpTransport = require('nodemailer-smtp-transport');

module.exports = function someName() {

// create reusable transporter object using the default SMTP transport
var transporter = nodemailer.createTransport(smtpTransport({
  service: 'gmail',
  auth: {
      user: '7384093@gmail.com',
      pass: '*******'
  }
}))

// setup e-mail data with unicode symbols
var mailOptions = {
  from: '"nerd studio" <7384093@gmail.com>', // sender address
  to: '7384093@gmail.com', // list of receivers
  subject: 'Подтверждение запроса \\ разработак чат-ботов \\ nerd       studio', // Subject line
  text: 'Добрый день! Вы оставили нашему Валере запрос и мы с радостью подтверждаем его получение. В ближайшее время с вами свяжется наш менелдер', // plaintext body
  html: '<b>Добрый день! Вы оставили нашему Валере запрос и мы с радостью подтверждаем его получение. В ближайшее время с вами свяжется наш менелдер</b>' // html body
};

// send mail with defined transport object
transporter.sendMail(mailOptions, function(error, info){
  console.log(mailOptions);
  console.log(info);
   if(error){
       return console.log(error);
   }
   console.log('Message sent: ' + info.response);
 });
}
var nodemailer=require('nodemailer');
var smtpTransport=require('nodemailer-smtp-transport');
module.exports=函数someName(){
//使用默认SMTP传输创建可重用的传输对象
var transporter=nodeEmailer.createTransport(smtpTransport({
服务:“gmail”,
认证:{
用户:'7384093@gmail.com',
通过:'********'
}
}))
//使用unicode符号设置电子邮件数据
var mailpoptions={
发件人:“‘书呆子工作室’,//发件人地址
致:'7384093@gmail.com“,//接收者列表
主题:“书呆子工作室”,主题行
正文:正文:正文:正文
html:“html:“html”
};
//使用定义的传输对象发送邮件
transporter.sendMail(邮件选项,函数(错误,信息){
日志(邮件选项);
控制台日志(信息);
如果(错误){
返回console.log(错误);
}
console.log('发送的消息:'+信息响应);
});
}

我的nodemailer目前的工作方式是:创建一个文件config/mail.js:

var nodemailer = require('nodemailer');

var transporter = nodemailer.createTransport({
    host: 'yourHost',
    port: 2525, //example
    auth: {
        user: 'yourUser',
        pass: 'yourPass'
    }
});

module.exports = function(params) {
    this.from = 'yourEmail';

    this.send = function(){
        var options = {
            from : this.from,
            to : params.to,
            subject : params.subject,
            text : params.message
        };

        transporter.sendMail(options, function(err, suc){
            err ? params.errorCallback(err) : params.successCallback(suc);
        });
    }
}
然后,每当我想发送电子邮件时:

var Mail = require(path.join(__dirname, '..', '..', 'config', 'mail.js'));

var options = {
    to: 'example@example.com',
    subject: 'subject',
    message: 'your message goes here'
}

var mail = new Mail({
    to: options.to,
    subject: options.subject,
    message: options.message,
    successCallback: function(suc) {
        console.log('success');
    },
    errorCallback: function(err) {
        console.log('error: ' + err);
    }
});

mail.send();

我的nodemailer目前的工作方式是:创建一个文件config/mail.js:

var nodemailer = require('nodemailer');

var transporter = nodemailer.createTransport({
    host: 'yourHost',
    port: 2525, //example
    auth: {
        user: 'yourUser',
        pass: 'yourPass'
    }
});

module.exports = function(params) {
    this.from = 'yourEmail';

    this.send = function(){
        var options = {
            from : this.from,
            to : params.to,
            subject : params.subject,
            text : params.message
        };

        transporter.sendMail(options, function(err, suc){
            err ? params.errorCallback(err) : params.successCallback(suc);
        });
    }
}
然后,每当我想发送电子邮件时:

var Mail = require(path.join(__dirname, '..', '..', 'config', 'mail.js'));

var options = {
    to: 'example@example.com',
    subject: 'subject',
    message: 'your message goes here'
}

var mail = new Mail({
    to: options.to,
    subject: options.subject,
    message: options.message,
    successCallback: function(suc) {
        console.log('success');
    },
    errorCallback: function(err) {
        console.log('error: ' + err);
    }
});

mail.send();

使用Gmail

var nodemailer = require('nodemailer');

// Create the transporter with the required configuration for Gmail
// change the user and pass !
var transporter = nodemailer.createTransport({
    host: 'smtp.gmail.com',
    port: 465,
    secure: true, // use SSL
    auth: {
        user: 'myemail@gmail.com',
        pass: 'myPassword'
    }
});

// setup e-mail data
var mailOptions = {
    from: '"Our Code World " <myemail@gmail.com>', // sender address (who sends)
    to: 'mymail@mail.com, mymail2@mail.com', // list of receivers (who receives)
    subject: 'Hello', // Subject line
    text: 'Hello world ', // plaintext body
    html: '<b>Hello world </b><br> This is the first email sent with Nodemailer in Node.js' // html body
};

// send mail with defined transport object
transporter.sendMail(mailOptions, function(error, info){
    if(error){
        return console.log(error);
    }

    console.log('Message sent: ' + info.response);
});
var nodemailer = require('nodemailer');

// Create the transporter with the required configuration for Outlook
// change the user and pass !
var transporter = nodemailer.createTransport({
    host: "smtp-mail.outlook.com", // hostname
    secureConnection: false, // TLS requires secureConnection to be false
    port: 587, // port for secure SMTP
    tls: {
       ciphers:'SSLv3'
    },
    auth: {
        user: 'mymail@outlook.com',
        pass: 'myPassword'
    }
});

// setup e-mail data, even with unicode symbols
var mailOptions = {
    from: '"Our Code World " <mymail@outlook.com>', // sender address (who sends)
    to: 'mymail@mail.com, mymail2@mail.com', // list of receivers (who receives)
    subject: 'Hello ', // Subject line
    text: 'Hello world ', // plaintext body
    html: '<b>Hello world </b><br> This is the first email sent with Nodemailer in Node.js' // html body
};

// send mail with defined transport object
transporter.sendMail(mailOptions, function(error, info){
    if(error){
        return console.log(error);
    }

    console.log('Message sent: ' + info.response);
});
使用Zoho

var nodemailer = require('nodemailer');

// Create the transporter with the required configuration for Gmail
// change the user and pass !
var transporter = nodemailer.createTransport({
    host: 'smtp.zoho.com',
    port: 465,
    secure: true, // use SSL
    auth: {
        user: 'myzoho@zoho.com',
        pass: 'myPassword'
    }
});

// setup e-mail data, even with unicode symbols
var mailOptions = {
    from: '"Our Code World " <myzoho@zoho.com>', // sender address (who sends)
    to: 'mymail@mail.com, mymail2@mail.com', // list of receivers (who receives)
    subject: 'Hello ', // Subject line
    text: 'Hello world ', // plaintext body
    html: '<b>Hello world </b><br> This is the first email sent with Nodemailer in Node.js' // html body
};

// send mail with defined transport object
transporter.sendMail(mailOptions, function(error, info){
    if(error){
        return console.log(error);
    }

    console.log('Message sent: ' + info.response);
});
var nodemailer=require('nodemailer');
//为Gmail创建具有所需配置的transporter
//更改用户并通过!
var transporter=nodeEmailer.createTransport({
主机:“smtp.zoho.com”,
港口:465,
安全:true,//使用SSL
认证:{
用户:'myzoho@zoho.com',
密码:“我的密码”
}
});
//设置电子邮件数据,即使使用unicode符号
var mailpoptions={
发件人:“‘我们的代码世界’,//发件人地址(谁发送)
致:'mymail@mail.com, mymail2@mail.com“,//接收者列表(接收者)
主题://你好,//主题行
text:'你好,世界',//纯文本正文
html:“Hello world
这是Node.js'//html body中第一封使用nodeEmailer发送的电子邮件 }; //使用定义的传输对象发送邮件 transporter.sendMail(邮件选项,函数(错误,信息){ 如果(错误){ 返回console.log(错误); } console.log('发送的消息:'+信息响应); });
使用Gmail

var nodemailer = require('nodemailer');

// Create the transporter with the required configuration for Gmail
// change the user and pass !
var transporter = nodemailer.createTransport({
    host: 'smtp.gmail.com',
    port: 465,
    secure: true, // use SSL
    auth: {
        user: 'myemail@gmail.com',
        pass: 'myPassword'
    }
});

// setup e-mail data
var mailOptions = {
    from: '"Our Code World " <myemail@gmail.com>', // sender address (who sends)
    to: 'mymail@mail.com, mymail2@mail.com', // list of receivers (who receives)
    subject: 'Hello', // Subject line
    text: 'Hello world ', // plaintext body
    html: '<b>Hello world </b><br> This is the first email sent with Nodemailer in Node.js' // html body
};

// send mail with defined transport object
transporter.sendMail(mailOptions, function(error, info){
    if(error){
        return console.log(error);
    }

    console.log('Message sent: ' + info.response);
});
var nodemailer = require('nodemailer');

// Create the transporter with the required configuration for Outlook
// change the user and pass !
var transporter = nodemailer.createTransport({
    host: "smtp-mail.outlook.com", // hostname
    secureConnection: false, // TLS requires secureConnection to be false
    port: 587, // port for secure SMTP
    tls: {
       ciphers:'SSLv3'
    },
    auth: {
        user: 'mymail@outlook.com',
        pass: 'myPassword'
    }
});

// setup e-mail data, even with unicode symbols
var mailOptions = {
    from: '"Our Code World " <mymail@outlook.com>', // sender address (who sends)
    to: 'mymail@mail.com, mymail2@mail.com', // list of receivers (who receives)
    subject: 'Hello ', // Subject line
    text: 'Hello world ', // plaintext body
    html: '<b>Hello world </b><br> This is the first email sent with Nodemailer in Node.js' // html body
};

// send mail with defined transport object
transporter.sendMail(mailOptions, function(error, info){
    if(error){
        return console.log(error);
    }

    console.log('Message sent: ' + info.response);
});
使用Zoho

var nodemailer = require('nodemailer');

// Create the transporter with the required configuration for Gmail
// change the user and pass !
var transporter = nodemailer.createTransport({
    host: 'smtp.zoho.com',
    port: 465,
    secure: true, // use SSL
    auth: {
        user: 'myzoho@zoho.com',
        pass: 'myPassword'
    }
});

// setup e-mail data, even with unicode symbols
var mailOptions = {
    from: '"Our Code World " <myzoho@zoho.com>', // sender address (who sends)
    to: 'mymail@mail.com, mymail2@mail.com', // list of receivers (who receives)
    subject: 'Hello ', // Subject line
    text: 'Hello world ', // plaintext body
    html: '<b>Hello world </b><br> This is the first email sent with Nodemailer in Node.js' // html body
};

// send mail with defined transport object
transporter.sendMail(mailOptions, function(error, info){
    if(error){
        return console.log(error);
    }

    console.log('Message sent: ' + info.response);
});
var nodemailer=require('nodemailer');
//为Gmail创建具有所需配置的transporter
//更改用户并通过!
var transporter=nodeEmailer.createTransport({
主机:“smtp.zoho.com”,
港口:465,
安全:true,//使用SSL
认证:{
用户:'myzoho@zoho.com',
密码:“我的密码”
}
});
//设置电子邮件数据,即使使用unicode符号
var mailpoptions={
发件人:“‘我们的代码世界’,//发件人地址(谁发送)
致:'mymail@mail.com, mymail2@mail.com“,//接收者列表(接收者)
主题://你好,//主题行
text:'你好,世界',//纯文本正文
html:“Hello world
这是Node.js'//html body中第一封使用nodeEmailer发送的电子邮件 }; //使用定义的传输对象发送邮件 transporter.sendMail(邮件选项,函数(错误,信息){ 如果(错误){ 返回console.log(错误); } console.log('发送的消息:'+信息响应); });
您不需要安装npm NodeEmailer smtp传输,只有NodeEmailer足以向gmail发送电子邮件。但首先,进入谷歌账户,向下滚动并选中允许不太安全的应用:打开并继续。您将发送您的gmail电子邮件。以下是完整的代码-

var nodemailer = require('nodemailer');
app.post('/contactform', function (req, res) {


        var mailOpts, smtpTrans;

        //Setup Nodemailer transport, I chose gmail. Create an application-specific password to avoid problems.
        smtpTrans = nodemailer.createTransport(smtpTransport({
            service: 'gmail',
            //  host:'smtp.gmail.com',
            //  port:465,
            // secure:true,
            auth: {
                user: "xxxxxx@gmail.com",
                pass: "xxxxxx"
            }
        }));
        var mailoutput = "<html>\n\
                        <body>\n\
                        <table>\n\
                        <tr>\n\
                        <td>Name: </td>" + req.body.form_name + "<td></td>\n\
                        </tr>\n\
                        <tr>\n\
                        <td>Email: </td><td>" + req.body.form_email + "</td>\n\
                        </tr>\n\
                        <tr>\n\
                        <td>MN: </td>" + req.body.form_phone + "<td></td>\n\
                        </tr>\n\
                        <tr>\n\
                        <td>Messge: </td>" + req.body.form_message + "<td></td>\n\
                        </tr>\n\
                        </table></body></html>";
        //Mail options
        mailOpts = {
            to: "Your_App_Name <xxxxxxxx@gmail.com>",
            subject: req.body.form_subject,
            html: mailoutput
        };

        smtpTrans.sendMail(mailOpts, function (error, res) {
            if (error) {
                // res.send("Email could not send due to error" +error);
                return console.log(error);
            }
        });
        console.log('Message sent successfully!');
            res.render('contact.ejs');
    });
    //console.log(query.sql);

});
var nodemailer=require('nodemailer');
app.post('/contactform',函数(请求、回复){
var mailOpts,smtpTrans;
//在设置Nodemailer传输时,我选择了gmail。创建特定于应用程序的密码以避免出现问题。
smtpTrans=nodeEmailer.createTransport(smtpTransport({
服务:“gmail”,
//主机:'smtp.gmail.com',
//港口:465,
//安全:是的,
认证:{
用户:“xxxxxx@gmail.com",
通行证:“xxxxxx”
}
}));
var mailoutput=“\n\
\n\
\n\
\n\
名称:“+req.body.form\u Name+”\n\
\n\
\n\
电子邮件:“+req.body.form\u Email+”\n\
\n\
\n\
MN:“+req.body.form\u phone+”\n\
\n\
\n\
消息:“+req.body.form\u消息+”\n\
\n\
";
//邮件选项
邮件选项={
致:“您的应用程序名称”,
主题:请求主体表格主题,
html:mailoutput
};
smtpTrans.sendMail(mailOpts,函数(error,res){
如果(错误){
//res.send(“由于错误无法发送电子邮件”+错误);
返回console.log(错误);
}
});
log('消息发送成功!');
res.render('contact.ejs');
});
//log(query.sql);
});