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



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

以下是我的代码:

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这样的电子邮件。您可以防止发送错误的电子邮件。这无助于检测电子邮件是否正确,但至少可以确保电子邮件格式正确,从而减少发送的不需要的电子邮件数量。

使用香草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());
}

相关内容

最新更新