我使用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"....
答案 0 :(得分:0)
也许您有两个不同的php.ini文件,一个用于您的http服务器,另一个用于您的命令行客户端。
执行<?php phpinfo(); ?>
并检查浏览器和命令行中加载的php.ini。
输出应该是“加载配置文件c:\ xampp \ php \ php.ini”
答案 1 :(得分:0)
我认为安东尼斯特林是正确的。你可以试试这个。找到cli的php.ini文件的位置。使用以下命令
php -i | grep php.ini
它将显示Php CLI的ini文件的路径
在那里添加以下行
extension=php_openssl.dll
它应该工作。我还没有测试过。如果有任何问题,请随时更改。
答案 2 :(得分:0)
我猜这是你的PHP配置。 HTTP服务器和命令行没有使用相同的文件,命令行使用的文件缺少openssl扩展名的包含。
使用命令行中的phpinfo()
函数找出它正在使用的文件:
php -r "phpinfo();"
然后查找“已加载的配置文件”行以查看它正在使用的文件。如果这是一个Windows服务器,您只需要进入该文件并添加openssl扩展,方法是将其附加到它:
extension=php_openssl.dll
确保将extension_dir
设置为正确的路径;这是PHP安装目录的“ext”目录。
答案 3 :(得分: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