如果电子邮件无效,PHPMailer不会发送

时间:2016-05-06 20:28:54

标签: php validation email phpmailer

我使用PHPMailer通过联系表单发送电子邮件。 当我在输入字段中输入无效的电子邮件地址时,仍会发送电子邮件。我想执行客户端和服务器端验证。

PHPMailer是否有内置的验证系统来检查无效的电子邮件地址?如果输入的电子邮件无效,我想返回错误而不发送电子邮件。

2 个答案:

答案 0 :(得分:1)

验证电子邮件地址最简单,最正确的方法是使用filter_var。您可以在将它们发送到PHPMailer之前编写一个函数来验证它们,而不是依赖于修补过的PHPMailer。

function validateEmailAddr($addr) {
    // note: do not attempt to write any regex to validate email addresses;
    // it will invariably be wrong
    return filter_var($addr, FILTER_VALIDATE_EMAIL);
}

答案 1 :(得分:1)

你说你可以输入像'sdjfygsdfisdf' sdjfygsdfisdf'并且仍会收到发送给您的电子邮件。

那很奇怪。因为在PHPMailer中添加任何电子邮件地址('' cc',' bcc',' replyto')将通过{{ 1}}函数,包括验证检查。添加'来自'地址使用不同的代码,但也进行验证检查。

这里最明显的一点是,您实际上并未进行任何错误检查以捕获这些错误。

根据您是否使用异常使用PHPMailer,当您为其提供错误地址时,可能只会从addOrEnqueueAnAddress()等函数返回false值。如果您忽略该值并继续进行,那么仍然会发送电子邮件。

所以你需要添加一些错误处理。检查函数调用返回setFrom()

但是我的首选建议是切换到使用错误处理程序的异常 - PHPMailer只需设置一个标志即可。这将使错误处理更容易,因为您不需要在每个函数调用上检查错误;只需将整个内容包装在false try块中,最后一次完成错误处理。