PHPMailer和函数escapeshellcmd()

时间:2017-01-25 08:13:55

标签: php phpmailer

我使用新版本的PHPMailer。在服务器上,我收到一个错误:

  

警告:出于安全原因,在第1442行的/public_html/library/email/class.phpmailer.php中已禁用了escapeshellcmd()

是否有可以取代escapeshellcmd()的功能?

2 个答案:

答案 0 :(得分:3)

不,escapeshellcmd() has some inherent problems使许多人无法禁用,但您可以采用不同的方式解决这个问题:使用SMTP转换为localhost

默认情况下,PHPMailer使用PHP mail()函数进行发送,该函数通过shell调用本地sendmail二进制文件(需要使用escapeshellcmd()),从而打开与邮件的同步SMTP连接localhost上的服务器。您可以通过直接向localhost发送,绕过shell开销来跳过大部分内容。这样做:

$mail->isSMTP();
$mail->Host = 'localhost';

其他设置应与默认设置一起使用。将SMTP用于localhost的两个优点是,您可以在提交过程中获得更好的反馈(使用$mail->SMTPDebug = 2;),并且比使用mail()更快。

答案 1 :(得分:1)

您可以使用旧版本。我使用版本:5.2.6并且它可以工作。