nodemailer不返回错误,但未发送电子邮件

时间:2011-01-05 15:57:25

标签: javascript node.js

我无法理解这一点...我有一个与我同一网络托管的SMTP服务器,我可以ping它并尝试发送电子邮件,但实际的电子邮件永远不会通过。我正在使用node_mailer ...在回调期间没有返回错误...服务器上没有身份验证,因为它只在内部使用,我不确定这是否可能是问题的一部分。它通过ASP工作,但我想让它与Node.js一起使用

我的脚本基本上就是这样:

email.send({
  host : "theaddressoftheserver(can ping)",
  port : "25",         
  domain : "theaddressoftheserver(can ping)",
  to : "Some@internalEmail.com",
  from : "Some@internalEmail.com",
  subject : "Test",
  body: "Test"
},
function(err, result){
  if(err) console.log(err);
  else console.log("Appears to have sent...");
});

3 个答案:

答案 0 :(得分:0)

我建议您使用Postmark

  

Postmark帮助小型和大型Web应用程序提供和跟踪交易电子邮件。不用担心设置,交付和服务器维护。我们已经擅长这一点。

Node.js已经有两个Postmark库。

示例

var postmark = require("postmark")("YOURAPIKEY");

postmark.send({
    "From": "donotreply@example.com", 
    "To": "target@example.us", 
    "Subject": "Test", 
    "TextBody": "Test Message"
});

答案 1 :(得分:0)

我最近回答了一个类似的问题,它可能对您有所帮助:

https://stackoverflow.com/a/12623787/340736

不幸的是,很难确切地知道问题所在。 ASP脚本是否在同一台服务器上?您是否尝试过针对服务器和sending it manually运行telnet?节点进程是否有防火墙限制?

我想到的一件事是,如果您说您的ASP脚本有效,并且您的SMTP服务器不使用身份验证。但它可能就是这样,并且它冒充你的用户(运行ASP进程的用户)并使用它进行身份验证(AD身份验证)..

只是猜测。

答案 2 :(得分:0)

我想到了node_mailer可以通过gmail帐户发送电子邮件。我用过代码,

const transporter = createTransport({
  service: gmail,
  auth: {
    user: process.env.MAILADDRESS,
    pass: process.env.MAILPASSWORD
  }
});
let mailOptions = {
     from: process.env.MAILADDRESS,
     to: recipient@email.com,
     subject: 'verification code for verify email',
     text: 'verification code
   }

   transporter.sendMail(mailOptions, function(err, info){
    if (err) {
      // something

    } else {
      // something
    }
  })

这很简单。为了完成这项工作,我必须先确保Gmail帐户的Less secure app access处于启用状态,然后再使用该电子邮件。我说的是我要发送电子邮件的电子邮件。 (发件人的电子邮件)。

所以我的意思是,如果您的SMTP服务器上有任何安全选项托管在同一网络上,则需要将其关闭,以便node_mailer使用电子邮件地址。