【问题标题】:PHP on GoDaddy Linux Shared trying to send through GMAIL SMTPGoDaddy Linux Shared 上的 PHP 尝试通过 GMAIL SMTP 发送
【发布时间】:2011-07-23 08:09:00
【问题描述】:

为此,我已经尝试过在 StackOverflow 和其他网站上发布的每一个脚本/代码/方法,但没有成功。我在 GoDaddy 上托管。我已经设置了一个 Google App 帐户,设置了 MX 记录所需的一切(为此使用 GoDaddy 工具),甚至尝试从我的站点的 GMAIL 界面发送一些电子邮件,以及通过我的一个 unix 上的终端中的 SMTP机器。这一切都奏效了。

但是,当我尝试使用 PHP 时,它没有!是不是像 GoDaddy 以某种方式阻止它?

我总是收到:

SMTP -> 错误:连接失败 服务器:连接被拒绝 (111) SMTP 错误:无法连接到 SMTP 主机。 邮件程序错误:SMTP 错误:无法 连接到 SMTP 主机。

这是我用于 PHPMailer 的代码:

<html>
    <head>
        <title>PHPMailer - SMTP (Gmail) advanced test</title>
    </head>
    <body>
    <?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       = "smtp.gmail.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   = "MYFROMADDRESSHERE";  // GMAIL username
        $mail->Password   = "MYFROMPASSWORDHERE";            // GMAIL password
        $mail->AddReplyTo('MYFROMADDRESSHERE', 'Sender Name');
        $mail->AddAddress('TESTTOADDRESSHERE', 'Recipient Name');
        $mail->SetFrom('MYFROMADDRESSHERE', 'Sender Name');
        $mail->AddReplyTo('MYFROMADDRESSHERE', 'Sender Name');
        $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!
    }
    ?>
</html>

谢谢!

【问题讨论】:

  • 简单的测试方法,如果您有 shell 访问权限:登录服务器,然后尝试“telnet smtp.gmail.com 465”。您将无法执行 SSL 的操作,但如果存在防火墙问题,您也会在此处收到“连接被拒绝”。如果它连接然后挂起输入,它不是防火墙,而是与您的代码有关。
  • 我这台服务器上没有开启SHELL,需要48小时才能激活;需要在几个小时内解决这个问题。还有其他建议吗?

标签: php smtp gmail phpmailer


【解决方案1】:

如前所述,GoDaddy has been known to block outgoing SSL SMTP connections 赞成强制您使用他们自己的外发邮件服务器。

这几乎只是冰山一角,因为 GoDaddy 作为一家公司、注册商和网络托管服务商的巨大吸力。抛弃他们。

【讨论】:

  • 这是否意味着我要么转移到另一个主机或我被卡住了?! GoDaddy 的邮件很慢!另外,如果 GMAIL 使用 SSL 并且他们阻止了它,是否还有其他服务可以使用?我不在乎它是否是 GMAIL,只要它从我发送的邮件中显示“@mydomain.com”,并且只要他们不去垃圾用户(尽管我为我的域添加了 SPF, GoDaddy 默认邮件程序仍在向我的用户发送垃圾邮件)
  • 这意味着你应该找到一个好的、有信誉的房东。那里还有其他邮件服务,但我不知道哪一种适合您。 (我喜欢 Amazon SES,但学习曲线很长,因为您必须修改代码以通过它发送而不是使用 SMTP。)
  • 刚刚通过 GoDaddy 的客户支持确认了这一点;多么糟糕的服务。
  • 可以这样做。请参阅下面的答案。
【解决方案2】:

我遇到了同样的问题,在浏览了不同的网站后,我找到了这个,它确实有效!

GoDaddy 允许使用 Gmail 作为您的 SMTP 发送电子邮件,只需要摆脱 smtp.gmail.com 并改用其主机即可。这是我的设置:

$mail = new PHPMailer();
$mail->isSMTP();
$mail->Host = "relay-hosting.secureserver.net";
$mail->Username = "your-account@gmail.com";
$mail->Password = "yourpassword";
// ...
// send from, send to, body, etc...

参考(见前两篇文章) http://support.godaddy.com/groups/web-hosting/forum/topic/phpmailer-with-godaddy-smtp-email-server-script-working/

【讨论】:

  • 使用 他们的 SMTP 服务器根据定义使用 Gmail 的 SMTP 服务器。将电子邮件作为您的 Gmail 地址(或 Google Apps 地址)发送可能会带来严重的垃圾邮件问题,因为他们的服务器不会通过 SPF 或 DKIM 清除以作为您的 Gmail 用户帐户发送。
  • 非常感谢@ecairol,您的回答也帮助我使用 swift mailer 解决问题。
  • 已确认 GoDaddy 对我的 WordPress 问题。我使用了 WP-Mail-SMTP 并设置了以下内容:“发件人电子邮件”、“发件人名称”、“通过 SMTP 发送所有 wordpress 电子邮件”、“设置返回路径以匹配发件人电子邮件”、“SMTP 主机” :relay-hosting.secureserver.net"、"SMTP 端口:25"、"无加密"、"无 SMTP 身份验证"
【解决方案3】:

我终于解决了这个问题,在//$mail-&gt;isSMTP(); 行上发表了评论。之后,我的 Gmail 帐户开始在 Godaddy 中正常工作。

require 'PHPMailer/class.phpmailer.php';
require 'PHPMailer/PHPMailerAutoload.php';


$mail = new PHPMailer;


 $name = $_POST['name'];
    $email = $_POST['email'];
    $message = $_POST['message'];
    $subject = 'Your subject';

    $body = "From: $name\n E-Mail: $email\n Comments:\n $message";


//$mail->isSMTP();
$mail->Host = 'smtp.gmail.com';
$mail->SMTPAuth = true;
$mail->Username = 'xxxxxxxxxxxx@gmail.com';
$mail->Password = 'xxxxxxxxx';
$mail->SMTPSecure = 'tls';
$mail->Port =587;

【讨论】:

  • 这不是“修复”;它通过不使用您的 gmail 帐户使您的 gmail 帐户“工作”。
  • 谢谢,我已经尝试让 phpmailer 工作几天了。我不确定这是如何解决的,但它确实有效。
  • 我今天在 GoDaddy Linux 服务器上遇到了这个问题,使用 PHPMailer 5.6 得到“无法连接到服务器:连接被拒绝 (111)”。在尝试了其他几个建议后,这个简单的改变奏效了。我有 G Suite 为我的域处理邮件,我不使用 GoDaddy 电子邮件,所以我需要使用 smtp.gmail.com 发送。我不明白它为什么会起作用,但这仍然是 2019 年 2 月这种情况的当前答案。
【解决方案4】:

使用 localhost 作为托管 goDaddy 服务器上的主机。使用以下端口 25,465,587。 GoDaddy 的设置:

答案与此链接有关:PHPMailer GoDaddy Server SMTP Connection Refused @Nate Bryam

 $this->mail->Host = 'localhost';  
    //$this->mail->SMTPAuth = true;                               
    //$this->mail->Username = 'xxx@gmail.com';            
    //$this->mail->Password = 'xxx';                      
    //$this->mail->SMTPSecure = 'ssl';                           
    //$this->mail->Port = 465;//25;//587; 

不需要 SMTP Auth。它完美无缺!

【讨论】:

  • 仅当您在 MX 记录中使用 GoDaddy 邮件设置时才有效(例如,如果您将 GSuite MX 记录设置为使用外部邮件提供商,那么它会静默失败);当它起作用时,只要您不关心发送的所有邮件都会到达用户的垃圾邮件文件夹,它就是完美的;)
  • 这对我有用......我不需要任何花哨的东西 - 只需发送一封电子邮件,其中包含消息并以“联系我们”表格中指定的收件人为主题,你瞧,这正是这让我可以做什么。我没有设置任何 MX 记录(我假设它们是默认的)。我所做的只是创建一个电子邮件帐户并将其设置为 FROM 地址,同时将 replyTO 设置为用户输入的电子邮件地址。
【解决方案5】:

不幸的是,您甚至不能在 GoDaddy 中使用像 DYNDNS 这样的出站邮件服务,它们只允许您使用他们的中继服务器。限制。

【讨论】:

    【解决方案6】:

    他们唯一的选择是使用域并使用他们的电子邮件服务发送邮件。

    【讨论】:

      【解决方案7】:

      require_once('PHPMailerAutoload.php');

                          $mail = new PHPMailer();
                          $mail->isSMTP();
                          $mail->Host = "relay-hosting.secureserver.net";
                          $mail->Username = 'chandana@gmail.com';
                          $mail->Password = 'fwxnorhqttkxydr';
                          $mail->SetFrom($email);
                          $mail->Subject = 'enquiry from YnRack site';
                          $mail->Body = 'enquiry from YnRack site' . $message . '"From: \"' . $name . $email;
                          $mail->IsHTML(true);
                          $mail->AddAddress('chandana@gmail.com');
                          $mail->Send();
      

      【讨论】:

        【解决方案8】:

        我不支持 Godaddy,因为它们通常很烂,但这对我有用。他们可能已经更新了那里的系统。

        $mail = new PHPMailer(); // create a new object
        $mail->IsSMTP(); // enable SMTP
        $mail->SMTPDebug = 1; // debugging: 1 = errors and messages, 2 = messages only
        $mail->SMTPAuth = true; // authentication enabled
        $mail->SMTPSecure = 'tls'; // secure transfer enabled REQUIRED for GMail
        $mail->Host = "smtp.gmail.com";
        
        $mail->Port = 587; // or 587 or 465
        $mail->IsHTML(true);
        $mail->Username = "stuff@gmail.com";
        $mail->Password = "password";
        $mail->setFrom('gmail_account@gmail.com', 'Someone's name');
        $mail->Subject = $subject;
        $mail->Body = $body;
        $mail->AddAddress("gmail_account@gmail.com");
            if (!$mail->send()) {
                echo "Mailer Error: " . $mail->ErrorInfo;
                return false;
            } else {
                return true; 
            }
        }
        

        哦,我也想给大家,我不关心OOP!!!

        【讨论】:

        • 这根本不起作用。不支持在 godaddy 服务器中使用 gmail smtp。
        • 不要对大约两年前提交的答案投反对票。不知道从那以后 Godaddy 做了什么?
        • 所以你想让我编辑两年前的答案,以获得我不再使用的代码?没那么多……
        • @chad 投赞成票,因为我同意不赞成投反对票
        【解决方案9】:

        您可以使用您的 gmail 并让 Godaddy 在 Cpanel 中启用远程邮件交换器。您必须要求他们这样做,因为您无法在 cpanel 中访问它

        【讨论】:

        • 您可以使用 cmets 获得建议
        【解决方案10】:

        以下是一些信息: http://aravindisonline.blogspot.in/2012/01/phpmailer-with-godaddy-smtp-email.html

        这对我有用:

        $mail->Host = "relay-hosting.secureserver.net";
        //Set the SMTP port number - likely to be 25, 465 or 587
        $mail->SMTPSecure = 'tsl';
        $mail->Port = 25;
        //Whether to use SMTP authentication
        $mail->SMTPAuth = false;
        

        【讨论】:

          【解决方案11】:

          更简单。奇怪的是,您需要注释行“// $mail->IsSMTP();”。是的,好的,它的 SMTP,但是如果启用此行,则无法发送邮件。 ...不需要更多配置。仅此注释行。

          【讨论】:

            猜你喜欢
            • 2010-11-16
            • 1970-01-01
            • 2011-04-01
            • 2012-04-19
            • 2011-08-11
            • 2021-05-08
            • 2014-08-27
            相关资源
            最近更新 更多