【问题标题】:Nodemailer TypeError : Cannot read property 'sendMail' of undefinedNodemailer TypeError:无法读取未定义的属性“sendMail”
【发布时间】:2019-05-19 14:58:18
【问题描述】:

我有一个联系表格,预计会向我的网站所有者发送电子邮件。 服务器是一个使用 Express 和 NodeMailer 中间件的 Node V8,并且设置如下:

const nodemailer = require('nodemailer');
const mailer = nodemailer.createTransport(
    {host:'ns0.ovh.net',
    port:587,
    secure : false,
    auth:{
        user:'frederic.merle@montardplomberie.fr',
        pass:'xyz'
        }
    }
).verify(function(error, success){
    if (error){
        console.log('server is not ready to take messages')
    }else{
        console.log('server is ready to take messages')
    }
})

api.post('/mail', (req, res) =>{
    console.log("prepare to send mail request")
    if(req.body.company === null){
        req.body.company ="aucun";
    }
    if(req.body.subject === null){
        req.body.subject="aucun";
    }
    const mailOptions = {
        from: req.body.from,
        to: 'frederic.montard@montardplomberie.fr',
        subject: 'Message reçu de www.montardplomberie.fr',
        text : req.body.msg,
        html :  '<b>De: &nbsp;</b>' + req.body.name +'&nbsp;'+ req.body.surname + '<br>' +
                '<b>Société: &nbsp;</b>' + req.body.company + '<br>'+
                '<b>Objet :&nbsp;</b>' + req.body.subject + '<br>' +
                '<b>Message :&nbsp;</b><br>' + req.body.msg + '<br>' +
                '<b>Coordonnées :&nbsp;</b>' + req.body.tel + '&nbsp;/<br>&nbsp' +req.body.email


    };
    mailer.sendMail(mailOptions, error => console.log(error), info => console.log('Message sent: '+ info.messageId));
    mailer.close();
})

但是,当我的请求被触发时,会出现错误 500,并且终端会显示以下内容:

server is ready to take messages
prepare to send mail request
TypeError: Cannot read property 'sendMail' of undefined
    at api.post (/home/phmerle/sandbox/gestsoft/backend/server.js:98:12)
    at Layer.handle [as handle_request] (/home/phmerle/sandbox/gestsoft/backend/node_modules/express/lib/router/layer.js:95:5)
    at next (/home/phmerle/sandbox/gestsoft/backend/node_modules/express/lib/router/route.js:137:13)
    at Route.dispatch (/home/phmerle/sandbox/gestsoft/backend/node_modules/express/lib/router/route.js:112:3)
    at Layer.handle [as handle_request] (/home/phmerle/sandbox/gestsoft/backend/node_modules/express/lib/router/layer.js:95:5)
    at /home/phmerle/sandbox/gestsoft/backend/node_modules/express/lib/router/index.js:281:22
    at Function.process_params (/home/phmerle/sandbox/gestsoft/backend/node_modules/express/lib/router/index.js:335:12)
    at next (/home/phmerle/sandbox/gestsoft/backend/node_modules/express/lib/router/index.js:275:10)
    at Function.handle (/home/phmerle/sandbox/gestsoft/backend/node_modules/express/lib/router/index.js:174:3)
    at router (/home/phmerle/sandbox/gestsoft/backend/node_modules/express/lib/router/index.js:47:12)

深入研究 nodemailers 文档后,似乎 transport.sendMail(在我的情况下为 mailer.sendMail)应该是正确的使用方法,并且数据和回调以正确的方式传递给该方法(在我看来)。我做错了什么?

【问题讨论】:

    标签: nodemailer


    【解决方案1】:

    发现了!我只是在 nodemailer.createTransport 之后删除了验证功能,并且 sendMail 功能按预期工作。

    【讨论】:

      猜你喜欢
      • 2020-06-06
      • 2018-10-02
      • 1970-01-01
      • 1970-01-01
      • 2020-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多