nodemailer mail不会传递到其他域,例如gmail,yahoo

时间:2017-07-22 15:17:42

标签: node.js smtp office365 nodemailer

带有nodemailer邮件的NodeJS不会从我的公司域传送到其他域,例如gmail,yahoo。

SELECT a.*
     , @i:=@i+1 rank
  FROM 
     ( SELECT user_id
            , SUM(subtotal) total 
         FROM 
            ( SELECT user_id
                   , category
                   , subcategory
                   , MAX(score) subtotal 
                FROM my_table 
               GROUP 
                  BY user_id
                   , category
                   , subcategory
            ) x 
        GROUP 
           BY user_id
     ) a
  JOIN 
     ( SELECT @i:=0) vars
 ORDER
    BY total DESC;

NodeJS v7.2.0 nodemailer v2.6.4

我可以将邮件发送到同一个域网络。其他域甚至没有收到任何错误和邮件未送达。

var transporter = nodemailer.createTransport({
host: 'smtp.office365.com',
port: 587,
requireTLS: true,
tls: {
       ciphers: 'SSLv3'
   },
secureConnection: false, // use SSL
auth: {
  user: "XXX",// Your email id
  pass: "XXX"// Your password
},
debug: true
});

有任何配置想法吗?

2 个答案:

答案 0 :(得分:0)

它所做的就是远程登录以发送电子邮件,因此如果它将其发送到相同的域电子邮件,那么它应该发送给所有人。我与用户有类似的问题,电子邮件最终成为用户垃圾邮件。

您是否可以在自己访问电子邮件时向其他域发送电子邮件?

如果是这样.....你应该尝试使用gmail发送它,看看是否有任何修复,以便我们可以缩小范围,如果问题是nodemailer或你的电子邮件。

祝你好运。

答案 1 :(得分:0)

使用name配置中的transporter属性,对于gmail帐户来说效果很好(如果收件箱中没有看到电子邮件,请查看垃圾邮件文件夹,您会看到它)。对于您的配置,添加name属性,如下所示:

 var transporter = nodemailer.createTransport({

    name: "www.office365.com", <----------------- //just an example

    host: 'smtp.office365.com',
    port: 587,
    requireTLS: true,
    tls: {
      ciphers: 'SSLv3'
    },
      secureConnection: false, // use SSL
      auth: {
      user: "XXX",// Your email id
      pass: "XXX"// Your password
   },
   debug: true
 });

此配置适用于gmail帐户,但不适用于yahoo帐户。

我的yahoo帐户首先收到10封电子邮件,然后停止接收以nodemailer发送的电子邮件,没有错误,甚至没有垃圾邮件。我刚刚通过从gmail向yahoo邮件发送电子邮件(测试电子邮件)解决了这个问题,当我在yahoo收件箱中收到此电子邮件时,我可以再次通过nodemailer发送邮件到yahoo邮件。

我真的不知道原因,也许雅虎之所以锁定了我的电子邮件地址,是因为它在很短的时间间隔内陆续发送了10封电子邮件,并在收到其他邮件服务发送的电子邮件时将其解锁。

希望对您有帮助。