PHPMailer GoDaddy服务器SMTP连接被拒绝

时间:2014-02-18 00:07:06

标签: php linux email phpmailer

前几天我遇到了GoDaddy托管网站的一些问题。我打电话给他们的技术支持,与我交谈过的人建议我的问题与我在Windows机箱上的问题有关,并且在Linux机箱上会更好。对此没有意见,我同意了,他们让我转过身来。

在转换之后,我的PHPMailer功能让我感到厌烦。我有几个月的工作,所以我知道我的设置是准确的。我已经向GoDaddy证实,我试图发送的帐户并没有改变他们的观点。用户端未进行任何更改(如新密码)。最重要的是,唯一不同的是我的网站现在托管在Linux服务器上。就是这样。

所以我认为我的PHPMailer困难必须与此相关,因为在服务器转换发生的确切时刻,已经工作了几个月的脚本失败太巧合了。但为什么?我花了一个小时的技术支持,他们发现服务器设置没有任何问题。我们验证了我的设置(只是为了好玩)。一切看起来都不错,但是当我发送电子邮件时,我收到了这个错误:

SMTP -> ERROR: Failed to connect to server: Connection refused (111)SMTP Connect() failed.

关于此类错误的帖子很多,而且几乎所有帖子都与第一次设置错误且设置错误或省略设置的人有关。但是,我知道我的设置是完整和准确的,因为我已成功使用它们好几个月。为了完整起见,我会在这里张贴它们:

$mail = new PHPMailer();
$mail->IsSMTP();  //telling the class to use SMTP
$mail->isHTML(true);
$mail->Host         = "smtpout.secureserver.net"; //also tried "relay-hosting.secureserver.net"
$mail->WordWrap     = 50;
$mail->SMTPAuth     = true;
$mail->SMTPSecure   = "ssl";
$mail->Port         = 465;
$mail->Username     = "example@email.com";
$mail->Password     = *******;
$mail->Subject      = "Test Email";
$mail->SMTPDebug = 1;

有没有人有任何想法可能会发生这种情况?是否存在技术支持人员可能不知道的某些服务器设置,例如在我的php.ini文件中?和我一起工作过的那个人尽力帮助我,但他可能根本不知道什么。

感谢任何帮助。如果我能提供任何其他信息,请告诉我。谢谢!

编辑:我还应该提一下我做的其他一些尝试。无论如何,我都会得到相同的结果。

1)端口587的TLS 2)没有使用端口25,80和3535的SSL。 2)我自己的gmail地址修改服务器,用户名,密码等。

20 个答案:

答案 0 :(得分:39)

我在像@ surfbird0713这样的Linux上使用GoDaddy。在我的第32次尝试中,以下内容也适用于我:

$mail2->Host = localhost;
//$mail2->SMTPAuth = false;
//$mail2->Username = 'xxxx@xxxxxx.com';
//$mail2->Password = '*******';

//$mail2->SMTPSecure = 'tls';

//$mail2->Port = 465;

我以前尝试使用用户名,登录名,端口等等。当我注释掉所有这些内容时,只需使用localhost就可以了。

答案 1 :(得分:34)

由于这似乎是一个持续存在的问题,让我加上自己的经验。

我们的网站使用PHPMailer,该网站托管在GoDaddy Linux服务器上。 似乎正确的设置(根据我在SO和goDaddy支持网站上找到的所有内容)如下:

SMTP_SERVER: smtpout.secureserver.net (or alternatively relay-hosting.secureserver.net)
SMTP_PORT: 465 //or 3535 or 80 or 25
SMTP_AUTH: true //always
SMTP_Secure: 'ssl' //only if using port 465

在花费6个多小时尝试端口的每个变体(25,3535,4655),服务器relay-hosting.secureserver.net,smtpout.secureserver.net:[port]等),用户名,密码等之后。我打电话给goDaddy。 40分钟后,据透露:

1)"工作空间"电子邮件帐户正在退休。这很重要,因为如果您今天拥有goDaddy的电子邮件帐户,您可能拥有Workspace帐户。根据技术支持代表,这是与您的Linux帐户分开托管的。

2)goDaddy正在转向cPanel电子邮件帐户。欢呼!时间表? " ......在接下来的2到3年内!"

3)当我与代表打电话时,我将帐户从Workspace移到了cPanel帐户。真的很容易做到。

4)将电子邮件帐户(包括编辑MX记录)更改为cPanel电子邮件(而不是&#34;工作区&#34;电子邮件)后,使用PHPMailer的网络表单电子邮件的相应设置为:< / p>

SMTP_SERVER: localhost   //(and I mean literally: "localhost"- in place of smtp.secureserver.net and relay-hosting.secureserver.net, etc.)

......以及其他一切(如上所述)......

我使用PHPMailer构建的webform在此更改后运行良好!

在PHPMailer设置中使用您的cPaneL电子邮件帐户登录名(用户名)和密码,您的网络电子邮件将无缝运行!

额外的好处是,可以在[yourdoman] \ webmail访问网络邮件(任何人都可以使用它吗?)。没有更多神秘的网址要记住了!帐户可以是IMAP或POP!

不可否认,这意味着您必须使用goDaddy的cPanel电子邮件帐户,但使用PHPMailer让网络表格无懈可击是真正的回报!

答案 2 :(得分:4)

我已经遇到这个问题好几周了。最后,解决了。 首先,我要说明问题的原因(正如我所经历的那样)。 GoDaddy只允许端口2546580离开。因此,您无法访问任何未使用这3个端口中的任何端口的SMTP服务器。 但是,如果您使用每个示例的GMAIL SMTP或任何其他重播服务器(特别是来自Bell Canada,在端口465上),那么来自GoDaddy的任何中继请求都将被阻止 - 因此您将看到{{1} }。是的,他们是托管服务的竞争对手......所以在这个问题何时解决之间得出自己的结论。 更糟糕的是,当您从GoDaddy提供的Connection Refused (111)发送电子邮件时,您将面临长时间排队的重大不便,可能需要几分钟才能收到电子邮件。更糟糕的是,Bell Canada(或Bell附属公司&#39;)电子邮件帐户的人不会看到来自此中继服务器的电子邮件 - 电子邮件甚至无法访问您的垃圾邮件箱!由于电子邮件完全被贝尔阻止(他们的借口=来自GoDaddy的太多垃圾邮件)。

所以,最近我做了这个,它对我来说很好。如果您有GoDaddy的托管服务,请注册一个电子邮件帐户。然后使用该电子邮件帐户,例如relay-hosting.secureserver.net,使用PHPMail执行此操作:

mywebmail@mydomain.com

然后做你的常规PHPMailing事情......这对我很有用。我希望它能为你做同样的事。

答案 3 :(得分:4)

经过很多挫折之后,这对我也有用。

include("includes/class.phpmailer.php");

date_default_timezone_set('UTC');

define('SMTP_HOST','relay-hosting.secureserver.net');
define('SMTP_PORT',25);**
define('SMTP_USERNAME','me@aravindnc.com');
define('SMTP_PASSWORD','me123');
define('SMTP_AUTH',false);

$email = 'aravind_n_c@yahoo.co.in';
$firstName = 'Aravind';

$mail = new PHPMailerR();
$mail->IsSMTP();
$mail->SMTPDebug = 1;                 
$mail->SMTPAuth = SMTP_AUTH;                
$mail->Host = SMTP_HOST;
$mail->Port = 25;
$mail->Username = SMTP_USERNAME;
$mail->Password = SMTP_PASSWORD;
$mail->SetFrom(SMTP_USERNAME,'AravindNC.IN');
$mail->AddReplyTo(SMTP_USERNAME,"AravindNC.IN");
$mail->Subject = "Welcome to AravindNC.IN";
$mail->AltBody = "To view the message, please use an HTML compatible email viewer!";
$mail->MsgHTML('This is a test.');
$mail->AddAddress($email, 'Aravind NC');
$mail->Send();

?>

答案 4 :(得分:2)

这些将是GoDaddy的SMTP设置:

require("PHPMailer-master/PHPMailerAutoload.php");
$mail = new PHPMailer();
$mail->IsSMTP();
$mail->SMTPDebug  = 2;
$mail->From = "yourmail@ddd.com";
$mail->FromName = "name";
$mail->Host = "localhost"; 
$mail->SMTPAuth = false; 
$mail->SMTPSecure = false;
$mail->SMTPAutoTLS = false;

答案 5 :(得分:2)

我有同样的问题但我试过这个

$mail->SMTPAuth = false;

和HOSTNAME:relay-hosting.secureserver.net

Bingoooooo正在努力

请在SMTP中执行此设置

答案 6 :(得分:2)

使用上面的一些建议,我可以在GoDaddy的共享主机上启动并运行电子邮件的交钥匙引导站点。

我对email.php进行了一次AJAX调用,其中包含:

 <?php

require 'PHPMailerAutoload.php';

if ($_POST) {
    $name    = $_POST['contactName'];
    $email   = $_POST['contactEmail'];
    $message = $_POST['contactMessage'];

    /* Don't touch */
    $mail = new PHPMailer();
    $mail->isSMTP();
    $mail->Host        = "relay-hosting.secureserver.net";
    $mail->SMTPAuth    = false;
    $mail->setFrom($email, $name);
    /* end */

    /* Configure the address the email will be sent to */
    $mail->addAddress('administrator@stackchampion.com', 'Adam InTae Gerard');
    $mail->Subject = 'Re: StackChampion Inquest';
    /* This is forwarded through a GoDaddy forwarding account */

    $mail->Body    = $message;

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

我在GitHub上放了一个工作演示:

https://github.com/Thoughtscript/wp_postlib_godaddy_php_emailer

可自由使用和开源,但上面列出了相关代码。他们的SMTP服务器显然存在很多问题 - 我发现您可以通过使用他们提供的不需要身份验证的中继服务器来绕过它,尽管他们仍然可以与您的一个已注册的电子邮件相关联

希望能帮到别人! 干杯!

答案 7 :(得分:1)

根据Godaddy,取代

$mail->Host = "smtpout.secureserver.net"; //also tried "relay-hosting.secureserver.net"

$mail->Host = "smtp.secureserver.net"; //also tried "relay-hosting.secureserver.net"

它对我有用。

答案 8 :(得分:1)

如果在WordPress中使用cPanel和WPForms

帮助我的是从cPanel创建电子邮件地址 并使用“手动设置”部分中的设置使用SSL或非SSL

enter image description here

答案 9 :(得分:1)

在与这个问题搏斗了几天并让它开始工作后,我想我会在2017年更新这个帖子。希望我可以节省一些浪费时间的人。我在带有cpanel的Godaddy上主持。这是我最终遇到的SMTPAutoTLS设置并尝试了这是缺失的部分。我收到的错误如下:

PHP警告:stream_socket_enable_crypto():第369行/home/username/public_html/classes/PHPMailer/class.smtp.php中的对等证书CN = *.prod.iad2.secureserver.net' did not match expected CN= localhost'

邮件程序错误:SMTP连接()失败。 https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting

以下是适用于我的PHPMailer设置。

$mail->isSMTP();
$mail->Host = 'localhost';
$mail->Port = 25;
$mail->SMTPSecure = false;
$mail->SMTPAutoTLS = false;
$mail->SMTPAuth = false;  

答案 10 :(得分:1)

嗯,我解决了这个问题,但并没有得到很好的解决。在耗尽了我能想到的一切之后,我只是举起手来告诉GoDaddy将我转回Windows服务器。一旦他们这样做,问题就消失了。因为我并不关心我所使用的服务器类型,所以这个结果令人满意,但很难满足。

所以,我对任何认为他们已经正确设置PHPMailer但无法使其工作的GoDaddy客户的建议是找出你是否在Linux服务器上。它看起来对我来说就像GoDaddy设置了他们的Linux服务器来阻止这种类型的邮件交易。我不能肯定地说,因为我只相信那是因为我没能使它发挥作用。但我可以清楚地说我的PHPMailer设置是准确的,至少在Windows上。

也许这会帮助节省一些时间和挫折感。如果有人有更好的想法,请发帖。

答案 11 :(得分:1)

2015年1月更新:我只需要解决这个问题。您需要使用cPanel电子邮件帐户进行GoDaddy linux托管:

  1. 在电子邮件帐户部分,在下拉列表中的每个电子邮件地址旁边,点击“配置电子邮件客户端”选项。
  2. 在下一页上,向下滚动到“手动设置”。在这里,您将看到GoDaddy现在为每个电子邮件地址创建一个定制的传入/传出服务器。因此,使用传出服务器,SSL,auth:true,端口:465,电子邮件/密码。
  3. 希望有所帮助。

答案 12 :(得分:1)

如果您的主机上有自己的电子邮件服务器,则您的电子邮件服务器使用以下端口25,465,587。 GoDaddy的设置:

$mail->isSMTP(); 
$mail->Host = localhost; 
$mail->SMTPAuth = true;
$mail->Username = 'example@gmail.com';
$mail->Password = 'password';

//$mail->SMTPSecure = 'tls'; 
//$mail->Port = 587;

在其他服务器上需要使用您的域创建邮箱:

$mail->isSMTP(); 
$mail->Host = localhost; 
$mail->SMTPAuth = true;
$mail->Username = 'example@yourdomain.com';
$mail->Password = 'password';

//$mail->SMTPSecure = 'tls'; 
//$mail->Port = 587;

答案 13 :(得分:1)

改变这个:

$mail->Host = 'smtpout.secureserver.net:465';
$mail->SMTPSecure = "ssl";

对此:

$mail->Host = 'smtpout.secureserver.net:25';

它对我有用!

答案 14 :(得分:0)

已更新2019年8月25日适用于寻求为Godaddy设置Rd-Mailform和PHPmailer的正确方法的人。

首先,请确保您具有Github的最新文件。

第二个是带有SMTP和GODaddy的Cpanel电子邮件的正确设置

编辑以下文件:rd-mailform.config.json(如果您不使用此文件,则在rd-mailform.php中使用硬代码)

要编辑的文件是:rd-mailform.config.json

~~~
 "useSmtp": false,
 "host": "localhost",              
 "port": 25,                                                     
 "username": "youraccountname@yourdoamin.com",                   
 "password": "yourpasswordforthataccount",                       
 "recipientEmail":  "youremailaddress"  
~~~ 

现在,在完成编辑后,打开rd-mailform.php并编辑以下行: //是否使用SMTP认证

            $mail->SMTPAuth = false;
            $mail->SMTPAutoTLS = false; 
            $mail->SMTPSecure = "tls";

这对于使用rd-mailform和phpmailer的所有Godaddy服务器都应该有效

-D

答案 15 :(得分:0)

经过数小时的艰苦工作后,我意识到使用 go daddy,为 SSL 和 TLS 提供的配置邮件客户端主机详细信息不起作用。因此,您必须复制部分 Cpanel 网址作为您的主机。

**注意:**确保在搜索栏上输入您的服务器 IP 和端口(例如 0:0:0:0:2083)后解析的 url 是什么

配置应该类似于

$smtp = Mail::factory('smtp', array (
'host' =>'2ueywefewueyuyeyryruw.prod.xxx.secureserver.net',
'port' => '587', 'auth' => true, 'username' => "youremail",
'password' => "yourEmailPassword", 'secure' => 'ssl'));

你也可以参考this link here

答案 16 :(得分:0)

哥们是噩梦。

如果您使用的是工作空间较旧的电子邮件帐户,并且不熟悉cpanel,请尝试

require '/home/content/94/8357694/html/SHTECH/server/PHPMailer.php';
use PHPMailer\PHPMailer\PHPMailer;

function sendmail($to,$subject,$message,$name)
{

define('SMTP_HOST','relay-hosting.secureserver.net');
define('SMTP_PORT',25);
define('SMTP_AUTH',true);



              $mail             = new PHPMailer();

              $mail->IsSMTP();
              $mail -> SMTPDebug = 1;
              $mail->Host       = "smtpout.secureserver.net";
              $mail->SMTPAuth   = SMTP_AUTH;
              $mail->Port       = 80;
              $mail->Username   = "info@signalhilltechnology.com";
              $mail->Password   = "allen1";
              //$mail->SMTPSecure = 'ssl';
              $mail->SetFrom('info@signalhilltechnology.com', 'Cagney');
              $mail->AddReplyTo("info@signalhilltechnology.com","Cagney");
              $mail->Subject    = $subject;
              $body             = $message;
              $mail->AltBody    = "To view the message, please use an HTML compatible email viewer!";
              $mail->MsgHTML($body);
              $address = $to;
              $mail->AddAddress($address, $name);
              if(!$mail->Send()) {
                  return 0;
              } else {
                    return 1;
              }




}

答案 17 :(得分:0)

刚出现这个问题,联系了GoDaddy,他们将我的MX从Local切换到Remote,它立即解决了问题!对于仍然遇到此问题的人来说,只是一个提醒。

答案 18 :(得分:0)

GoDaddy / Linux(cPanel)/ PHPMailer

require_once("../include/PHPMailer-master/PHPMailerAutoload.php");

$mail = new PHPMailer();
$mail->isSMTP();
$mail->Host         = "a2plcpnXXXXX.prod.iad2.secureserver.net";
$mail->SMTPDebug    = 2; 
$mail->SMTPAuth     = true;
$mail->Username     = "your username";
$mail->Password     = "your password";
$mail->SMTPSecure   = "tls";
$mail->Port         = 587;

您可以随意使用 $ mail-&gt; From $ mail-&gt; FromName 值所需的任何电子邮件/名称。希望这会有所帮助。

答案 19 :(得分:-2)

GoDaddy服务器SMTP连接被拒绝。

Bigrock $ mail-&gt; Port = 587; // SMTP ser * vers

GoDaddy的 $ mail-&gt; Port = 25; // SMTP ser * vers