This commit is contained in:
Benjamin Toby
2025-03-31 07:43:38 +01:00
parent 2091c823c8
commit fe97939faf
26 changed files with 486 additions and 145 deletions
@@ -0,0 +1,52 @@
import handleNodemailer, {
HandleNodemailerParam,
} from "../../backend/handleNodemailer";
import emailMxLookup from "../verification/email-mx-lookup";
import emailRegexCheck from "../verification/email-regex-test";
type Param = {
email?: string;
welcomeEmailOptions?: HandleNodemailerParam;
};
export default async function validateEmail({
email,
welcomeEmailOptions,
}: Param): Promise<{ isValid: boolean; message?: string }> {
if (!email) {
return {
isValid: false,
message: "Email is required.",
};
}
if (!emailRegexCheck(email)) {
return {
isValid: false,
message: "Invalid email format.",
};
}
const checkEmailMxRecords = await emailMxLookup(email);
if (!checkEmailMxRecords) {
return {
isValid: false,
message: "Email domain does not have valid MX records.",
};
}
if (welcomeEmailOptions) {
const welcomeEmail = await handleNodemailer(welcomeEmailOptions);
if (!welcomeEmail?.accepted?.[0]) {
return {
isValid: false,
message: "Email verification failed.",
};
}
}
return {
isValid: true,
message: "Email is valid.",
};
}