好吧,我有一个问题,我真的没有任何线索,已经阅读了我能找到的所有内容。
我在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防伪措施,伪造你的地址是伪造的。
您可能会发现切换到更加开明的托管服务提供商更容易。
答案 0 :(得分:1)
我猜你错过了IsSMTP()设置:
$mail = new PHPMailer();
$mail->IsSMTP();