0

我使用 PHPMailer 编写代码发送邮件

include 'class.phpmailer.php';
$mail = new PHPMailer();
$mail->IsSMTP();
$mail->SMTPAuth = true;
$mail->SMTPSecure = 'ssl';
$mail->SMTPDebug  = 1;
$mail->Host = 'smtp.gmail.com';
$mail->Port = 465;
$mail->Username = 'example1@gmail.com';
$mail->Password = 'password';
$mail->SetFrom('example2@gmail.com', 'Admin');
$mail->AddReplyTo('example@yahoo.com', 'Name');
$mail->AddAddress('xample3@gmail.com');
$mail->Subject = 'Active email';
$mail->MsgHTML('Click the link to active');
$mail->Send();

当我使用浏览器时,它可以发送邮件,但在命令提示符下,

php path_to_file

它不起作用,错误是:

SMTP -> ERROR: Failed to connect to server: Unable to find the socket transport ssl"....
4

4 回答 4

0

PHP 命令行需要一个 php.ini 来加载像 openssl 这样的扩展。我使用 Wamp,Apache 使用的 php.ini 文件与 php 命令行使用的文件不同。

Apache 使用的 php.ini 文件位于:C:\wamp\bin\apache\apache2.X.X\bin

命令行使用的 php.ini 文件位于:C:\wamp\bin\php\phpX.X.XX

于 2014-05-28T15:46:59.450 回答
0

也许您有两个不同的 php.ini 文件,一个用于您的 http 服务器,一个用于您的命令行客户端。

执行<?php phpinfo(); ?>并检查加载了 php.ini 的浏览器和命令行。

输出应该类似于“加载的配置文件 c:\xampp\php\php.ini”

相关问题:如何找到命令行使用的php.ini文件?

于 2013-07-01T09:43:47.840 回答
0

我认为安东尼斯特林是正确的。你可以试试这个。找到 cli 的 php.ini 文件在哪里。使用以下命令

php -i | grep php.ini

它将显示 PHP CLI 的 ini 文件的路径

在此处添加以下行

extension=php_openssl.dll

它应该工作。我还没有测试过。如果有任何问题,请随时更改。

于 2013-07-01T09:51:02.907 回答
0

我猜这是你的PHP配置。HTTP 服务器和命令行没有使用同一个文件,命令行使用的文件缺少 openssl 扩展的包含。

使用phpinfo()命令行中的函数找出它正在使用的文件:

php -r "phpinfo();"

然后查找“加载的配置文件”行以查看它正在使用哪个文件。如果这是一个 Windows 服务器,您只需要进入该文件并通过将其附加到它来添加 openssl 扩展名:

extension=php_openssl.dll

并确保extension_dir设置为正确的路径;这是 PHP 安装目录的“ext”目录。

于 2013-07-01T09:51:24.120 回答