当前位置: 首页 > 知识库问答 >
问题:

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

卢权
2023-03-14

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

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

共有2个答案

长孙淳
2023-03-14

您说过您可以输入类似“sdjfygsdfisdf”的内容,但仍然可以收到发送给您的电子邮件。

真奇怪。因为在PHPMailer中添加任何电子邮件地址(“to”、“cc”、“bcc”、“回复”)都将通过addOrEnqueueAn地址()函数,该函数包括验证检查。添加“来自”地址使用不同的代码,但也进行验证检查。

这里最明显的一点是,您实际上没有执行任何错误检查来捕获这些错误。

根据您是否让PHPMailer使用异常,当您给它一个不正确的地址时,您可能只会得到一个从函数(如setFrom())返回的false值。如果忽略该值并继续,则是的,电子邮件仍将发送。

因此,您需要添加一些错误处理。检查函数调用是否返回false

然而,我的首选建议是切换到为错误处理程序使用异常——PHPMailer只需设置一个标志就可以做到这一点。这将使错误处理变得更容易,因为您不需要在每个函数调用中检查false;只需将整件事包装在一个trycatch块中,并在最后一次性完成错误处理。

杭令
2023-03-14

验证电子邮件地址最简单、最正确的方法是使用filter\u 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);
}
 类似资料:
  • 我正在尝试通过PHPMailer发送电子邮件,它工作得很好。只有一个问题,我不知道如何解决。有可能,我可能需要尝试发送电子邮件到一个无效的地址,因为一个不存在的域。因为域名不存在,所以这些电子邮件不会被发送也没关系。当我尝试发送电子邮件时,会收到一条错误消息,PHPMailer将停止,并且不会继续向其他(有效)地址发送电子邮件。有没有办法跳过那些无效的电子邮件并强制PHPMailer继续而不显示错

  • 如果PhpMailer包含堆栈(例如。它总是返回“无效地址”错误。 有没有办法忽略这张支票?还是有一个很好的理由?我似乎在代码中找不到它,因此我没有在这里包含它。 非常感谢您的帮助。

  • 我正在使用PHPmailer发送电子邮件。到目前为止,我成功地将电子邮件发送到一个地址。现在,我想在一次点击中发送多封电子邮件。 问题:我曾尝试使用下面的一些循环发送多封电子邮件,但我输出错误。是的,它发送电子邮件,但只发送到一个地址,并且该电子邮件地址将获取所有应该发送到其他电子邮件的电子邮件。 例如,当我发送17封电子邮件时,这17封电子邮件只发送到一个地址。电子邮件应根据数据库中的地址发送,

  • 如果PhpMailer包含堆栈(例如。它总是返回“无效地址”错误。 有没有办法忽略这张支票?还是有充分的理由?我似乎在代码中找不到它,因此我没有在这里包含它。 非常感谢您的帮助。

  • 我使用的PHPMailer表格在这里找到。 从网站下载的示例是“接触-3”,在引导主题中使用PHPMailer通过gmail发送SMTP电子邮件。当我使用“接触-1”时,它完全适用于我的托管域电子邮件地址,但SMTP版本适用于gmail地址,联系人表单不会提交。 在下面的代码中,我更改了以下行以添加我的gmail地址和gmail密码: 任何关于使用给定信息进行此工作的帮助都将不胜感激-提前感谢!

  • 我一直在用代表我的office365帐号发送SMTP邮件,工作了大概一个星期,然后突然不工作了,不知道怎么变了。 当我在PHPMailer中启用high debug logging时,我看到: SMTP- 这篇文章似乎是最相关的: 不接受来自服务器的身份验证:504 5.7.4无法识别的身份验证类型 以下是我交给PHPMailer的文字SMTP设置: 以及实际的PHP代码: 作为理智检查,我在中使