繁体   English   中英

如果未发送电子邮件,Nodemailer 不会出错

[英]Nodemailer not giving error if email not sent

我正在尝试使用 nodemailer 发送电子邮件。 但是如果“to”字段有错误的电子邮件地址,则不会发送电子邮件,这是正确的。 但它没有给我一个错误并且函数得到解决。

下面是我的代码:

const send = nodemailer.createTransport({
 host: 'smtp.gmail.com',
 port: 1234,
 secure: false,
 type: 'login',
 auth: {
  user: USER,
  pass: PASSWORD
}
})
let message = {
 from: 'some email',
 to: 'johndoe@gmai.c',
 subject: 'subject',
 html: html
}

return new Promise((resolve: any, reject: any) => {
 send.sendMail(message, (error: any, result: any) => {
  if (error){
   console.log('Error')
   reject(error)
   return
  }
  resolve(result)
})
})

顺便说一句,我正在使用打字稿。 如果电子邮件未发送或“收件人”字段有错误的电子邮件,则永远不要记录错误。 有什么建议?

如果电子邮件错误,我认为您无法捕捉到错误,但您可以在发送电子邮件之前首先使用regex检查电子邮件是否为有效string 所以,如果你收到类似johndoe@gmai.c电子邮件。 您可以防止发送错误的电子邮件。 这将无助于检测电子邮件是正确还是不正确,但至少它会确保正确的电子邮件格式,从而减少不正确的电子邮件格式。 发送的不需要的电子邮件。

使用 vanilla JavaScript - 但可以很容易地转换为Typescript因为没有太多复杂性

try {
  let to = "johndoe@gmai.c";
  let validEmail = validateEmail(to);
   if (validEmail) {
     let info = transporter.sendMail({
       from: 'some.email'
       to: to, 
       subject: "Hello", 
       text: "Hello world?", 
       html: "<b>Hello world?</b>", 
     });
     console.log("Message sent: ", info.messageId);
   } else {
    throw "Email Not Valid";
   }
  } catch (e) {
   console.log("Error Occurred: ", e);
  }

 //A function to check if email is valid using regex

 function validateEmail(email) {
  const re = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9] 
    {1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
    return re.test(String(email).toLowerCase());
 }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM