PHPMailer调用$mail->anyparameter时超时


Timeout when calling $mail->anyparameter with PHPMailer

作为主题,我正试图用PHPMailer发送电子邮件。但奇怪的是,PHPMailer的示例只适用于XAMPP Windows,而不适用于XAMPP Linux。我没有修改复杂的设置,我从XAMPP Linux更改的设置只启用openssl。

我试图执行下面的基本代码,它只适用于XAMPP Windows,而不是XAMPP Linux。每次php处理包含$mail->的行时,脚本都会超时。

 <?php
 require_once "phpmailer/class.phpmailer.php";
 $mail = new PHPMailer;
 //die("ok");
 $mail->AddAddress("email address", "name");
 $mail->SetFrom("email address", "name");
 $mail->WordWrap = 50;
 $mail->IsHTML(true);
 $mail->Subject = "Subject";
 $mail->Body    = "<p>HTML Test</p>";
 $mail->Send()
 ?>

超时的信息:

Fatal error: Maximum execution time of 30 seconds exceeded in /opt/lampp/htdocs/phpmailertest/phpmailer/class.phpmailer.php on line 767

class.phpmailer.php的第767行:

return (boolean)preg_match('/^(?!(?>(?1)"?(?>'''[ -~]|[^"])"?(?1)){255,})(?!(?>(?1)"?(?>'''[ -~]|[^"])"?(?1)){65,}@)((?>(?>(?>((?>(?>(?>'x0D'x0A)?['t ])+|(?>['t ]*'x0D'x0A)?['t ]+)?)('((?>(?2)(?>['x01-'x08'x0B'x0C'x0E-''*-'[']-'x7F]|'''['x00-'x7F]|(?3)))*(?2)')))+(?2))|(?2))?)([!#-''*+'/-9=?^-~-]+|"(?>(?2)(?>['x01-'x08'x0B'x0C'x0E-!#-'[']-'x7F]|'''['x00-'x7F]))*(?2)")(?>(?1)'.(?1)(?4))*(?1)@(?!(?1)[a-z0-9-]{64,})(?1)(?>([a-z0-9](?>[a-z0-9-]*[a-z0-9])?)(?>(?1)'.(?!(?1)[a-z0-9-]{64,})(?1)(?5)){0,126}|'[(?:(?>IPv6:(?>([a-f0-9]{1,4})(?>:(?6)){7}|(?!(?:.*[a-f0-9][:']]){8,})((?6)(?>:(?6)){0,6})?::(?7)?))|(?>(?>IPv6:(?>(?6)(?>:(?6)){5}:|(?!(?:.*[a-f0-9]:){6,})(?8)?::(?>((?6)(?>:(?6)){0,4}):)?))?(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])(?>'.(?9)){3}))'])(?1)$/isD', $address);

这是我的详细信息:

  • Ubuntu 12.10桌面没有LAMP组件,只有XAMPP for Linux
  • XAMPP版本1.8.1(绝对是最新版本)
  • PHPMailer from https://github.com/Synchro/PHPMailer version master.

看起来我的XAMPP Linux有问题,但我无法追踪问题。

帮忙吗?

谢谢

我有完全相同的问题。我用肮脏的手段把它修好了。将函数(从public static function ValidateAddress($address) {开始)替换为:

public static function ValidateAddress($address) {
    return true;
}
这将验证您提供的任何地址,any!

在PHPMailer中使用地址之前,你应该自己检查地址。我不知道如果你不这样做会发生什么,检查一下地址。

我也有同样的问题,只是发现这与PHPMailer本身无关。它与您的SMTP服务器有关。我的医生刚告诉我出了点问题。

如果您有这个问题,我建议您先联系您的管理员。

编辑您的PHP.ini文件。这应该在你的PHP文件夹中。

在该文件中搜索maximum_execution_time out。编辑值-以秒为单位。- -默认值为30。

如:-

replace maximum_execution_time  30
      with   maximum_execution_time 3000(for 5 minutes if that helps)

编辑器注释:这并不总是有效的。正确答案见上文