我之前完成了它,但是我在我的服务器上重新安装了ubuntu 13.10,现在它不起作用,我的代码如下:
require 'php/PHPMailer/PHPMailerAutoload.php';
$mail = new PHPMailer();
$mail->isSMTP();
$mail->SMTPDebug = 2;
$mail->Debugoutput = 'html';
$mail->Host = 'smtp.gmail.com';
$mail->Port = 587;
$mail->SMTPSecure = 'tls';
$mail->SMTPAuth = true;
$mail->Username = 'mail@gmail.com';
$mail->Password = 'pass';
$mail->setFrom('mail@gmail.com', 'First Last');
$mail->addAddress('mail2@hotmail.com', 'Random person');
$mail->Subject = 'PHPMailer GMail SMTP test';
$mail->msgHTML('prueba');
//send the message, check for errors
if (!$mail->send()) {
echo 'Mailer Error: ' . $mail->ErrorInfo;
} else {
echo "Message sent!";
}
mail,mail2和pass只是安全词,它们是有效的地址和密码。
安装OpenSSL并使用临时证书。
在重新安装Ubuntu 13.10之后,为什么它现在无效?
忘了告诉,我现在得到的错误是:
SMTP错误:无法连接到服务器:php_network_getaddresses:getaddrinfo failed:名称或服务未知(0) SMTP connect()失败。 邮件程序错误:SMTP连接()失败。
答案 0 :(得分:0)
它很可能是Ubuntu中的防火墙设置...请尝试使用SSL,或按照以下说明进行进一步调查......
$mail->SMTPSecure = 'ssl';
$mail->Host = "smtp.gmail.com";
$mail->Port = 465;
问题意味着您无法连接到服务器smtp.gmail.com上的端口587。使用telnet验证:
telnet smtp.gmail.com 587
(这对我有用,所以服务器和端口号是正确的。)
这可能导致您无法在您所在地工作的原因是:
如果上面的telnet命令可以连接,那么您可以排除防火墙的问题。如果它不起作用,那么它很可能是防火墙,这会导致问题。
另外,找出与其他连接方法一起使用的端口号。也许这也适用于TLS。
答案 1 :(得分:0)
我安装了php-pear和其他一些软件包,它已经解决了:
apt-get install php-pear 梨安装邮件 pear安装Net_SMTP pear安装Auth_SASL pear install mail_mime
答案 2 :(得分:0)
我遇到了同样的问题。事实证明我的服务器上没有安装 sendmail 。我从fedora repo安装sendmail并重新启动apache服务器并连接。