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