Files
wish-pool/lib/email-validation.ts
2025-07-19 02:12:37 +08:00

61 lines
1.4 KiB
TypeScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// Email 驗證工具
export function isValidEmail(email: string): boolean {
if (!email) return true // 空值是允許的(可選欄位)
const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/
return emailRegex.test(email)
}
export function sanitizeEmail(email: string): string {
return email.trim().toLowerCase()
}
export function getEmailDomain(email: string): string {
const parts = email.split("@")
return parts.length > 1 ? parts[1] : ""
}
// 檢查是否為常見的臨時郵箱服務
const temporaryEmailDomains = [
"10minutemail.com",
"guerrillamail.com",
"mailinator.com",
"tempmail.org",
"throwaway.email",
]
export function isTemporaryEmail(email: string): boolean {
if (!email) return false
const domain = getEmailDomain(email)
return temporaryEmailDomains.includes(domain)
}
export function validateEmailForSubmission(email: string): {
isValid: boolean
message?: string
suggestion?: string
} {
if (!email) {
return { isValid: true } // 空值允許
}
if (!isValidEmail(email)) {
return {
isValid: false,
message: "請輸入有效的 Email 格式",
suggestion: "例如your.name@company.com",
}
}
if (isTemporaryEmail(email)) {
return {
isValid: false,
message: "請避免使用臨時郵箱服務",
suggestion: "建議使用常用的 Email 地址,以便我們能夠聯繫到你",
}
}
return { isValid: true }
}