[英]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.