簡體   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