使用nodemailer和smtp发送邮件而无需身份验证

时间:2018-09-04 08:20:08

标签: javascript node.js nodemailer

下面是我的代码。 gmail smtp服务器可以正常工作。 但是当我使用办公室(不需要身份验证)时,它会失败

可能是我使用的语法错误。

下面是使用gmail smtp的代码:

var transport = nodemailer.createTransport(“ smtps://xxxx@gmail.com:” + encodeURIComponent('abcd')+“ @ smtp.gmail.com:465”);

var mailOptions = {
    from: 'xxxx@abcd.com',
    to: 'xxxxyy@abcd.com',
    subject: 'hello world!',
    html: '<img src="cid:logo">',
    attachments: [{
        filename: 'test.png',
        path: 'D:/bbbbb/mmmm/src/test.png',
        cid: 'logo' //same cid value as in the html img src
    }]
};

transport.sendMail(mailOptions, (error, info) => {
    if (error) {
        console.log(error);
    }
    console.log(`Message sent: ${info.response}`);
}); 

由于我们的公司 smtp 不需要身份验证, 我已经尝试过以下代码:

 var transport = nodemailer.createTransport("smtps://xxxx@abcd.com:"+encodeURIComponent('') + "@xxxx.xxxrxx.com:25");

OR

var transport = nodemailer.createTransport("smtps://xxx.xxx.com:25");

但所有导致的错误

{ Error: 101057795:error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol:openssl\ssl\s23_clnt.c:797:

at Error (native) code: 'ECONNECTION', command: 'CONN' }

我的猜测是语法错误。 有人可以纠正我吗

感谢和问候。

1 个答案:

答案 0 :(得分:1)

创建auth消息时,可以从示例代码中删除SMTP Transport选项。

因此它应该如下所示:

  /**
   * Initialize transport object
   */
  const transporter = nodemailer.createTransport({
    host: "", //Host
    port: , // Port 
    secure: true
  });

    let mailOptions = {
      from: , // sender address
      to: , // list of receivers
      subject: , // Subject line
      text: , // plain text body
      html: // html body
    };

    /**
     * send mail with defined transport object
     */
    transporter.sendMail(mailOptions,
      (error, info) => {

      });