我正在尝试使用PHPMailer_V5.1通过gmail发送电子邮件。
收到以下错误,
SMTP - >错误:无法连接到服务器:无法找到套接字传输“ssl” - 您是否忘记在配置PHP时启用它? (41961176) SMTP错误:无法连接到SMTP主机。
以下是随PHPMailer下载的代码,我刚修改了 必填字段,
<?php
require_once('../class.phpmailer.php');
//include("class.smtp.php"); // optional, gets called from within class.phpmailer.php if not already loaded
$mail = new PHPMailer(true); // the true param means it will throw exceptions on errors, which we need to catch
$mail->IsSMTP(); // telling the class to use SMTP
try {
$mail->Host = "mail.yourdomain.com"; // SMTP server
$mail->SMTPDebug = 2; // enables SMTP debug information (for testing)
$mail->SMTPAuth = true; // enable SMTP authentication
$mail->SMTPSecure = "ssl"; // sets the prefix to the servier
$mail->Host = "smtp.gmail.com"; // sets GMAIL as the SMTP server
$mail->Port = 465; // set the SMTP port for the GMAIL server
$mail->Username = "santosh1984naidu@gmail.com"; // GMAIL username
$mail->Password = "********"; // GMAIL password
$mail->AddReplyTo('santosh1984naidu@gmail.com', 'First Last');
$mail->AddAddress('santosh1984naidu@gmail.com', 'John Doe');
$mail->SetFrom('santosh1984naidu@gmail.com', 'First Last');
$mail->AddReplyTo('santosh1984naidu@gmail.com', 'First Last');
$mail->Subject = 'PHPMailer Test Subject via mail(), advanced';
$mail->AltBody = 'To view the message, please use an HTML compatible email viewer!'; // optional - MsgHTML will create an alternate automatically
$mail->MsgHTML(file_get_contents('contents.html'));
$mail->AddAttachment('images/phpmailer.gif'); // attachment
$mail->AddAttachment('images/phpmailer_mini.gif'); // attachment
$mail->Send();
echo "Message Sent OK</p>\n";
} catch (phpmailerException $e) {
echo $e->errorMessage(); //Pretty error messages from PHPMailer
} catch (Exception $e) {
echo $e->getMessage(); //Boring error messages from anything else!
}
?>
答案 0 :(得分:8)
根据错误,似乎在PHP中未启用SSL。我认为你需要取消注释
extension = PHP_openssl.dll
在你的php.ini文件中
以下应该可以帮助您安装SSL,如果它已经在您的系统上设置:
答案 1 :(得分:0)
嗯,错误信息说明了一切:
无法找到套接字传输“ssl” - 您是否忘记在配置PHP时启用它?
这意味着PHP版本没有配备必要的库来通过SSL与邮件服务器(或任何其他服务器)进行通信。
如果您没有服务器的root访问权限,这可能是您的服务器管理员/提供商的问题。
从similar discussion in a forum,一个听起来非常现实的可能解决方案:
我的猜测是,没有为apache安装mod_ssl,或者是 已安装,但mod_ssl的配置行已注释掉 httpd.conf(就像我在suse9上一样)。 apxs只会启用ssl 如果mod_ssl启动并运行
,则在php中运行因此检查mod_ssl是否可用+在apache中启用然后尝试重新编译 php with
./ configure --with-apxs2 = / usr / sbin / apxs --with-mysql --enable-ssl