PHPMailer 上的 ValidateAddress 行为奇怪

发布于 2024-12-10 22:32:13 字数 1542 浏览 1 评论 0 原文

我正在使用 PHPMailer 并且 $mail->Send() 返回错误,我的问题是当我使用此电子邮件字符串“[email protected]",但另一方面,它可以与几乎任何其他电子邮件即“[电子邮件受保护]"。

调试代码后,我发现问题出在文件 class.phpmailer.php 中的 ValidateAddress() 函数上。电子邮件“[email protected]”似乎无效FILTER_VALIDATE_EMAIL 和 preg_match

PHPMailer - class.phpmailer.php - 第 550 行:

  public static function ValidateAddress($address) {
    if (function_exists('filter_var')) { //Introduced in PHP 5.2
      if(filter_var($address, FILTER_VALIDATE_EMAIL) === FALSE) {
        return false;
      } else {
        return true;
      }
    } else {
      return preg_match('/^(?:[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+\.)*[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+@(?:(?:(?:[a-zA-Z0-9_](?:[a-zA-Z0-9_\-](?!\.)){0,61}[a-zA-Z0-9_-]?\.)+[a-zA-Z0-9_](?:[a-zA-Z0-9_\-](?!$)){0,61}[a-zA-Z0-9_]?)|(?:\[(?:(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\.){3}(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\]))$/', $address);
    }
  }

为什么可能?有人知道发生了什么事吗???为什么不允许此电子邮件“[电子邮件受保护]”?

I'm using PHPMailer and $mail->Send() is returning an error, my problem is when I use this email-string "[email protected]" within $mail->SetFrom(), but in the other hand it works fine with almost any other email i.e "[email protected]".

After debugging the code I found out that the problem is in the file class.phpmailer.php over the function ValidateAddress(). It seems that the email "[email protected]" is not valid by FILTER_VALIDATE_EMAIL nor the preg_match

PHPMailer - class.phpmailer.php - line 550:

  public static function ValidateAddress($address) {
    if (function_exists('filter_var')) { //Introduced in PHP 5.2
      if(filter_var($address, FILTER_VALIDATE_EMAIL) === FALSE) {
        return false;
      } else {
        return true;
      }
    } else {
      return preg_match('/^(?:[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+\.)*[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+@(?:(?:(?:[a-zA-Z0-9_](?:[a-zA-Z0-9_\-](?!\.)){0,61}[a-zA-Z0-9_-]?\.)+[a-zA-Z0-9_](?:[a-zA-Z0-9_\-](?!$)){0,61}[a-zA-Z0-9_]?)|(?:\[(?:(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\.){3}(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\]))$/', $address);
    }
  }

Why is that possible?? does anyone have any idea what is going on??? why this email "[email protected]" is not allow?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

爱的十字路口 2024-12-17 22:32:13

我的问题是当我使用此电子邮件字符串“[电子邮件受保护]”内$mail->SetFrom()


我不知道为什么特定地址被拒绝,而其他地址则不然,但一般来说,您不仅需要指定一个有效的电子邮件地址作为发件人地址,但由您发送邮件的邮件服务器处理。

否则,要么发送服务器将拒绝发送,要么接收服务器很可能将邮件作为垃圾邮件丢弃。

通常的策略是指定 [email protected](yourdomain.com 是您的网站域名)。在某些服务器上,您需要实际设置该地址才能从该地址发送邮件。

my problem is when I use this email-string "[email protected]" within $mail->SetFrom()

I don't know why that specific address is being rejected and others aren't, but generally, you need to specify not only a valid E-Mail address as the from address, but one that is handled on the mail server you're sending the message from.

Otherwise, either the sending server is going to deny sending, or the receiving server is very likely to throw away the message as spam.

The usual policy is to specify [email protected] (yourdomain.com being your website domain). On some servers, you need to actually set up that address to be allowed to send mail from it.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文