Nodemailor 无法跨域发送邮件

问题描述 投票:0回答:2

我正在使用nodemailor通过node和express应用程序发送电子邮件。

问题:当我跨域发送电子邮件时,例如:我正在使用 Hostgator 电子邮件服务器,它仅使用 Hostgator 在托管电子邮件上发送电子邮件,但当我在 Gmail 上发送电子邮件时,它将返回成功

250 OK id=1hU5l2-000m0C-Lh 

但收不到电子邮件。

注意:跨域时收到成功回复但收不到邮件

const nodemailer = require('nodemailer');
const keys = require('../config/keys');
const smtpTransport = require('nodemailer-smtp-transport');
emailCredentaials = (data) => {

      var transporter = nodemailer.createTransport(smtpTransport ({
        host: 'my.hostgator.com',
        port: 465,
        secure:true,
        auth: {
            user: keys.email.emailUserName,
            pass: keys.email.emailPassword
          },
          tls: {
            // do not fail on invalid certs
            rejectUnauthorized: false
          }  
        }));
    var mailOptions = {
        from: keys.email.emailUserName,
        to: data.email,
        subject: 'Demo account credentials',
        html: '<h3>Please Follow the link to login : '
            + keys.emailLinks.accountCredentailLink + '<h3>' + '<br>Useraname &nbsp;&nbsp; : &nbsp;&nbsp;' + data.email + '</br><br> Password &nbsp;&nbsp; : &nbsp;&nbsp;' + data.password + '</br>'
    };

    transporter.sendMail(mailOptions, function (error, info) {
        if (error) {
            console.log("***********" + error);
        } else {
            console.log('*********Email sent:********' + info.response);
        }
    });
}
module.exports = emailCredentaials;

我对 nodemailor 使用了上述配置。谢谢

node.js smtp nodemailer email
2个回答
7
投票

经过大量挖掘后,我终于得到了以下答案,如果有人遇到同样的问题,请尝试以下解决方案。我添加了以下配置。

const nodemailer = require('nodemailer');
const keys = require('../config/keys');
const smtpTransport = require('nodemailer-smtp-transport');

emailCredentaials = (data) => {

    var transporter = nodemailer.createTransport(smtpTransport({
        name: 'hostgator',
        host: 'my.hostgator.com',
        port: 465,
        secure: true,
        auth: {
            user: keys.email.emailUserName,
            pass: keys.email.emailPassword
        }
    }));

    var mailOptions = {
        from: keys.email.emailUserName,
        to: data.email,
        subject: 'Demo account credentials',
        html: '<h3>Please Follow the link to login : '
            + keys.emailLinks.accountCredentailLink + '<h3>' + '<br>Useraname &nbsp;&nbsp; : &nbsp;&nbsp;' + data.email + '</br><br> Password &nbsp;&nbsp; : &nbsp;&nbsp;' + data.password + '</br>'
    };


    transporter.sendMail(mailOptions, function (error, info) {
        if (error) {
            console.log("***********" + error);
        } else {
            console.log('*********Email sent:********' + info.response);
        }
    });
}
module.exports = emailCredentaials;

发布问题的更改:

  • 需要添加“nodemailer-smtp-transport”

npm install --save nodemailer-smtp-transport

var transporter = nodemailer.createTransport(smtpTransport({
        name: 'hostgator',
        host: 'my.hostgator.com',
        port: 465,
        secure: true,
        auth: {
            user: keys.email.emailUserName,
            pass: keys.email.emailPassword
        }
    }));
  • 上面添加了“name”属性,它是服务器名称,谢谢

-1
投票

道具主机的值为“my.hostgator.com”,这是一个示例吗?我已经被困在这个问题里两天了:/

© www.soinside.com 2019 - 2024. All rights reserved.