【问题标题】:Nodemailer is not sending mails to valid emailids if array contains invalid emailids如果数组包含无效的 emailid,Nodemailer 不会将邮件发送到有效的 emailid
【发布时间】:2018-05-21 15:33:28
【问题描述】:

我尝试在 nodejs 中使用 nodemailer-smtp-transport 发送多封电子邮件,但如果多个收件人列表包含有效和无效的电子邮件 ID,则邮件不会发送到有效的电子邮件,总是会出错回调。

我的示例代码:-

var testemails=["name.@gmail.com,santosh@gmail.com"];
var mailOptions = {     
    from:config.email_from_addr,        
    //bcc :receiver_email,
    bcc:testemails,
    subject :subject,
    html:html
};      
var transporter = nodemailer.createTransport(smtpTransport({
    host:config.email_host_name,
    port: 25
}));
transporter.sendMail(mailOptions, function(error, info){    
    console.log("error: "+error);
    console.log("info: "+info);
    if(error){
        //console.log("Rejected: "+info.rejected);
        console.log("error",'Failed to send: '+subject+' ; Error: '+error);         
        return callback(null);
    }else{
        console.log("info","Promotion_EmailFurnished:  "+subject+" : "+receiver_email); 
        return callback(null);
    }
});

//此处无效电子邮件:name.@gmail.com 和 有效的 emailId:santosh@gmail.com 以及因无效邮件导致邮件发送失败如何收款?

有什么帮助吗?

谢谢提前。

【问题讨论】:

  • 您是否尝试过逐个发送,例如使用testemails.forEach(addr => {...})
  • 你好 ionizer,是的,我试过了,它无法发送无效的电子邮件并发送到有效的 id,但我不想再次迭代到数组所以

标签: node.js nodemailer


【解决方案1】:

你的数组是错误的,

var testemails=["name.@gmail.com,santosh@gmail.com"];

应该是,

var testemails=["name.@gmail.com","santosh@gmail.com"];

更新

以上只是你代码的第一件事,

第二

在 mailOptions 中您忘记输入收件人地址,密件抄送可能适用于 nodemailer,但如果没有收件人地址,它将从 smtp 端点失败。

var mailOptions = {     
    from:config.email_from_addr,        
    to : testemails,
    bcc:testemails,
    subject :subject,
    html:html
};

第三

传输器的密码字段在哪里?

最新节点邮件示例:

var transport = nodemailer.createTransport("SMTP", {
    host: "smtp.gmail.com", // hostname
    secureConnection: true, // use SSL
    port: 465, // port for secure SMTP
    auth: {
        user: "gmail.user@gmail.com",
        pass: "userpass"
    }
});

也请使用此获取更多信息:Docs

【讨论】:

  • 如果我尝试使用这个数组 var testemails=["name.@gmail.com","santosh@gmail.com"]; ,它仍然失败。我认为这不是数组的问题。
  • 谢谢Kalana Demel。我已经尝试纠正你提到的第一点和第二点仍然没有运气,还有一件事是需要添加身份验证:{用户:“gmail.user@gmail.com ", pass: "userpass" } 字段?
  • 是的,但取决于您的 smtp 提供商是谁,他们通常会提供用户名和密码,如果是上面的 google,应该可以在启用安全性较低的应用程序的情况下使用。
  • 但是我们没有得到用户名和密码。所以我们尝试了 nodemailer-smtp-tranport 模块,我们在没有通过有效收件人提交的身份验证的情况下进行了测试,它工作正常。我认为如果我们这样做不是问题不要通过它。
  • 谁是 smtp 提供商?
猜你喜欢
  • 2016-09-02
  • 1970-01-01
  • 1970-01-01
  • 2023-04-07
  • 2016-11-24
  • 2017-02-08
  • 2022-07-18
  • 2021-04-19
  • 2021-12-02
相关资源
最近更新 更多