我使用PHPMailer通过联系表单发送电子邮件。 当我在输入字段中输入无效的电子邮件地址时,仍会发送电子邮件。我想执行客户端和服务器端验证。
PHPMailer是否有内置的验证系统来检查无效的电子邮件地址?如果输入的电子邮件无效,我想返回错误而不发送电子邮件。
答案 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
块中,最后一次完成错误处理。