不能用phpmailer发送邮件

时间:2014-03-20 23:18:17

标签: php phpmailer ports ubuntu-13.10

我之前完成了它,但是我在我的服务器上重新安装了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连接()失败。

3 个答案:

答案 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服务器并连接。