【问题标题】:unable to send mail using nodemailer node.js api?无法使用 nodemailer node.js api 发送邮件?
【发布时间】:2019-06-25 18:54:36
【问题描述】:

我已经编写了使用 nodemailer node.js rest api 发送 gmail 的代码。这对我的本地系统服务器工作正常,但是当我在 windows-2000 服务器上部署相同的代码时,我无法发送 gmail 并收到内部服务器错误。

这是我正在使用的代码 sn-p --

var nodemailer = require('nodemailer');
var stringify = require('json-stringify');

// create reusable transport method (opens pool of SMTP connections)
var smtpTransport = nodemailer.createTransport({
service: 'Gmail',
host: 'smtp.gmail.com',
port:587,
secure: false,
auth: {
    user: 'user@gmail.com',
    pass: 'user@123'
}
});

// setup e-mail data with unicode symbols
module.exports={

create:function(req,res){
    var params=req.allParams();
    var order_details=JSON.stringify(params);
    //console.log("order-->"+order_details);

    var mailOptions = {
    from: 'user@gmail.com', // sender address
    to: 'user1@gmail.com', // list of receivers
    subject: "g-mail message ", // Subject line
    html: order_details // html body
    }

    console.log("mailOptions"+JSON.stringify(mailOptions));
    smtpTransport.sendMail(mailOptions, function(err, result){
        console.log(result);
        if(err){
            return res.status(500).json("Error");
            //return res.json("System Error")
        }else{
            return res.status(200).json("e-mail sent to customer");
        }
        smtpTransport.close();
    });
}
}

当我从本地系统服务器调用 api 时,这是我得到的 conole.log(result) 响应-->

{ accepted: [ 'user1@gmail.com' ],
 rejected: [],
 envelopeTime: 1094,
 messageTime: 1124,
 messageSize: 300,
 response: '250 2.0.0 OK 1539452574 189-v6sm7035924pfe.121 - gsmtp',
   envelope: 
   { from: 'user@gmail.com',
     to: [ 'user1@gmail.com' ] },
     messageId: '<d84e7c1e-7158-5c6a-851d-a783e05be5ce@gmail.com>' }

但是当我试图从我的 windows-2000 服务器调用 api 时,对于 line console.log(result)--> 我得到“未定义”。

所以我的问题是我是从 gmail.smtp 服务器还是从系统无法访问 gmail.smtp 服务器获得此响应。 我试图从我的windws-2000 服务器ping gmail.smtp 服务器并且丢包率为0%。所以 gmail.smtp 可以从我的服务器访问?

我还尝试了端口 465,587,25 和安全的真假选项。

对于错误日志,我得到了这个-

{ Error: self signed certificate in certificate chain at TLSSocket.
<anonymous> (_tls_wrap.js:1105:38) at emitNone (events.js:106:13) 
at TLSSocket.emit (events.js:208:7) at TLSSocket._finishInit (_tls_wrap.js:639:8) at TLSWrap.ssl.onhandshakedone (_tls_wrap.js:469:38) code: 'ECONNECTION', command: 'CONN' }}

感谢您对此问题的宝贵意见。

【问题讨论】:

  • err添加控制台日志,看看有没有错误。
  • @ Raj Kumar,对于错误日志,我得到了这个——{ 错误:TLSSocket 证书链中的自签名证书。 (_tls_wrap.js:1105:38) at emitNone (events .js:106:13) 在 TLSSocket.emit (events.js:208:7) 在 TLSSocket._finishInit (_tls_wrap.js:639:8) 在 TLSWrap.ssl.onhandshakedone (_tls_wrap.js:469:38) 代码: 'CONNECTION',命令:'CONN' }}
  • @Raj Kumar,谢谢,这非常有用。最后我添加了这一行 - process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";在 nodemailer.createTransport() 之前,它现在为我工作。

标签: node.js nodemailer


【解决方案1】:
var nodemailer = require('nodemailer');
var stringify = require('json-stringify');
// add this line before nodemailer.createTransport()
process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";
// create reusable transport method (opens pool of SMTP connections)
var smtpTransport = nodemailer.createTransport({
service: 'Gmail',
host: 'smtp.gmail.com',
port:587,
secure: false,
  auth: {
  user: 'user@gmail.com',
  pass: 'user@123'
   }
});

现在它可以工作了。

【讨论】:

    猜你喜欢
    • 2020-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-01
    • 2021-08-23
    相关资源
    最近更新 更多