使用Gmail发送邮件php不会到达

时间:2017-02-09 13:00:26

标签: php email server phpmailer

好吧,我有一个问题,我真的没有任何线索,已经阅读了我能找到的所有内容。

我在php中使用phpMailer的代码使用gmail,当终端打开php存档时,电子邮件到达应有的位置,但是,当我上传到服务器时,电子邮件只是到达最后的命运,如果他们从来没有到达邮件。

在我的情况下,我想发送一封电子邮件exemple@companyName.io,这也是一封gmail电子邮件。

我无法弄清楚为什么电子邮件只是在发送到hotmail或gmail帐户(exemple@gmail.com)时才能到达最终命运,但是发送到exemple@companyName.io(这是一个gmail) ()也不起作用。

提前致谢!

PHP代码:

<?php

date_default_timezone_set('Etc/UTC');

require 'PHPMailerAutoload.php';


$mail = new PHPMailer();


$mail->SMTPDebug = 2;

$mail->Debugoutput = 'html';


$mail->Host = 'smtp.gmail.com';



$mail->Port = 587; //same problem with other ports


$mail->SMTPSecure = 'tls'; //same problem with ssl


$mail->SMTPAuth = true;


$mail->Username = "exemple@gmail.com";


$mail->Password = "password";


$name = strip_tags($_POST['name']);
$email = strip_tags($_POST['email']);
$message = strip_tags($_POST['message']);

$mail->setFrom($email, $name);


$mail->addAddress('exemple@CompanyName.io', 'exemple Name');      

$mail->Subject = 'Contact';


$mail->Body = $message;


if (!$mail->send()) {
    echo "Mailer Error: " . $mail->ErrorInfo;
} else {
    echo "Message sent!";
}

编辑:

我找到了答案,我的服务器来自godaddy,所以:

GoDaddy的

受欢迎的美国托管服务提供商GoDaddy对发送电子邮件施加了非常严格的限制(至少变得无用)。它们将出站SMTP阻止到端口25,465和587到除自己的服务器之外的所有服务器。这个问题是Stack Overflow上许多令人沮丧的问题的主题。如果您发现您的脚本在您的本地计算机上运行,​​而不是在您将其上传到GoDaddy时,则会发生这种情况。 GoDaddy记录的解决方案非常糟糕:您必须通过他们的服务器发送,还要禁用所有安全功能,用户名和密码(很棒,嗯?!),为PHPMailer提供此配置:

$mail->isSMTP();
$mail->Host = 'relay-hosting.secureserver.net';
$mail->Port = 25;
$mail->SMTPAuth = false;
$mail->SMTPSecure = false;
GoDaddy also refuses to send with a From add

属于任何aol,gmail,yahoo,hotmail,live,aim或msn域名(请参阅他们的文档)。这是因为所有这些域都部署了SPF和DKIM防伪措施,伪造你的地址是伪造的。

您可能会发现切换到更加开明的托管服务提供商更容易。

1 个答案:

答案 0 :(得分:1)

我猜你错过了IsSMTP()设置:

$mail = new PHPMailer();
$mail->IsSMTP();