PHPMailer GoDaddy 服务器 SMTP 连接被拒绝

2024-10-12 10:28:00
admin
原创
88
摘要:问题描述:前几天,我在使用 GoDaddy 托管的网站时遇到了一些问题。我打电话给他们的技术支持,对方告诉我,我遇到的问题与我使用的是 Windows 系统有关,使用 Linux 系统会更好。对此我没什么意见,所以我同意了,他们就帮我换了系统。在这一转变之后,我的 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)不使用 SSL,使用端口 25、80 和 3535。2)我自己的 gmail 地址修改了服务器、用户名、密码等。


解决方案 1:

我在 Linux 上使用 GoDaddy,就像 @surfbird0713 一样。在第 32 次尝试中,以下方法也对我有用:

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

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

//$mail2->Port = 465;

我之前尝试过使用用户名、登录名、端口等。当我注释掉所有这些,然后只使用 localhost 时,它就起作用了。

解决方案 2:

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

我们的网站使用 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 电子邮件帐户,则您可能拥有工作区帐户。根据技术支持代表的说法,该帐户与您的 Linux 帐户分开托管。

2) goDaddy 正在转向 cPanel 电子邮件帐户。太好了!时间表?“... 在未来 2 到 3 年内!”

3) 当我与销售代表通话时,我将我们的帐户从 Workspace 移至 cPanel 帐户。这真的很容易做到。

4) 将电子邮件帐户(包括编辑 MX 记录)更改为 cPanel 电子邮件(而不是“工作区”电子邮件)后,使用 PHPMailer 的 Web 表单电子邮件的适当设置如下:

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

... 其余一切 (如上所述) 均相同...

经过这次更改后,我用 PHPMailer 构建的 Web 表单运行得非常完美!

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

额外的好处是,可以通过 [yourdoman] webmail 访问网络邮件(还有人在用吗?)。不再需要记住神秘的 URL!而且帐户可以是 IMAP 或 POP!

诚然,这意味着您必须使用 goDaddy 的 cPanel 电子邮件帐户,但让 Web 表单与 PHPMailer 完美协作才是真正的回报!

解决方案 3:

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

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:

这些将是您的 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:

我已经遇到这个问题好几个星期了。最后,它解决了。首先,我要说明问题的原因(正如我所经历的那样)。GoDaddy 只允许端口2546580出去。因此,您无法访问未使用这 3 个端口的任何 SMTP 服务器。但是,如果您使用 GMAIL 的 SMTP 或任何其他重放服务器(尤其是来自 Bell Canada 的重放服务器,在端口465),那么来自 GoDaddy 的任何中继请求都将被阻止 - 因此您将看到Connection Refused (111)。是的,他们是托管服务的竞争对手......所以你自己得出结论,看看他们之间何时会解决这个问题。更糟糕的是,当您发送 GoDaddy 提供的电子邮件时relay-hosting.secureserver.net,您将面临排队等候的极大不便,可能需要几分钟才能发送电子邮件。更糟糕的是,拥有 Bell Canada(或 Bell 分支机构)电子邮件帐户的人将看不到来自此中继服务器的电子邮件 - 电子邮件甚至不会到达您的垃圾邮件箱!因为该电子邮件已被 Bell 完全阻止(他们的借口 = GoDaddy 的垃圾邮件太多)。

所以,最近我这样做了,对我来说效果很好。如果您有 GoDaddy 的托管服务,请注册一个电子邮件帐户。然后使用该电子邮件帐户(例如mywebmail@mydomain.com,使用 PHPMail 执行以下操作):

$mail = new PHPMailer();
$mail->IsSMTP();
$mail->Host = "smtpout.secureserver.net";
$mail->Username = "mywebmail@mydomain.com"; /*Substitute with your real email*/
$mail->Password = "myverylongpassword"; /*Substitute with your real password*/
$mail->SMTPAuth = true;
$mail->Port = 80;

然后进行常规的 PHPMailing 操作... 这对我来说效果很好。希望对您也有同样的效果。

解决方案 6:

之前为了使其正常工作,GoDaddy SMTP 主机是:

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

然后将 GoDaddy SMTP 主机更改为:

$mail->Host = 'relay-hosting.secureserver.net';

但现在正常工作的 GoDaddy SMTP 主机是:

$mail->Host = 'localhost';

您也可以保留“SMTPAuth = false”和“用户名/密码 = 空白”。无论您使用的是 GoDaddy 主机电子邮件还是 GoDaddy cPanel 电子邮件,都没有关系。

代码的主要行是,因此请确保将其包含在内:

$mail->SMTPAutoTLS = false; 

您可以复制下面的整个代码,它将完全按原样运行:

if(isset($_POST["submit"])){

include('phpmailer/PHPMailerAutoload.php');
                    
//Create a new PHPMailer instance
$mail = new PHPMailer;
$mail->SMTPDebug = 0;  // Enable verbose debug output

//SMTP settings start
$mail->isSMTP(); // Set mailer to use SMTP
$mail->Host = 'localhost'; // Specify main and backup SMTP servers
$mail->SMTPAuth = false; // Enable SMTP authentication
$mail->Username = ''; // SMTP username
$mail->Password = ''; // SMTP password
$mail->SMTPAutoTLS = false; 
$mail->SMTPSecure = false; // Enable TLS encryption, `ssl` also accepted
$mail->Port = 25;

//Sender
$mail->setFrom('fromemail@domain.com');
//Receiver
$mail->addAddress('yourinbox@domain.com');

//Email Subject & Body
$mail->Subject = 'New Form Submission';
//Form Fields
$mail->Body = '
                Name = '$name'
                Email = '$email'
                Subject = '$subject'
                Message = '$message'
';

$mail->isHTML(true); // Set email format to HTML

//Send the message, check for errors
if (!$mail->send()) {
    echo 'Message could not be sent.';
    echo 'Mailer Error: ' . $mail->ErrorInfo;
}
else {
     echo 'Form Submitted Successfully.';
     // code for saving in data in database can be added here
}

解决方案 7:

在花了几天时间解决这个问题并使其正常工作后,我想更新这个帖子以适应 2017 年。希望我可以帮助别人节省几个小时。我的主机托管在 GoDaddy 和 cpanel 上。我终于遇到并尝试了 SMTPAutoTLS 设置,这是缺失的部分。我收到的错误如下:

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

邮件程序错误:SMTP connect() 失败。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;  

解决方案 8:

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

$mail->SMTPAuth = false;

和主机名:relay-hosting.secureserver.net

Bingoooooo 开始工作了

请在 SMTP 中执行一次此设置

解决方案 9:

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->From$mail->FromName值。希望这能有所帮助。

解决方案 10:

根据 Godaddy 的说法,更换

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

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

它对我有用。

解决方案 11:

通过运用上述一些建议,我能够在 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 服务器显然存在很多问题 - 我发现你可以通过使用他们提供的中继服务器来绕过这些问题,这些服务器不需要身份验证,但它们仍然可以与你的一个注册电子邮件帐户相关联。

希望这对某人有帮助!干杯!

解决方案 12:

好吧,我解决了这个问题,但不是以一种好的方式。在用尽了所有我能想到的方法后,我只能放弃,告诉 GoDaddy 将我切换回 Windows 服务器。他们一这样做,问题就消失了。由于我并不关心我使用的是哪种类型的服务器,所以这个结果令人满意,但很难令人满意。

因此,对于任何认为自己已正确设置 PHPMailer 但无法使其工作的 GoDaddy 客户,我的建议是查明您是否在 Linux 服务器上。在我看来,GoDaddy 已将其 Linux 服务器设置为阻止此类邮件交易。我不能肯定地说,因为我只相信这一点,因为我无法使其工作。但我可以清楚地说,我的 PHPMailer 设置是准确的,至少在 Windows 上是如此。

也许这可以帮助人们节省一些时间和精力。如果有人有更好的想法,请发帖。

解决方案 13:

如果您的主机上有自己的电子邮件服务器,您的电子邮件服务器使用以下端口 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;

解决方案 14:

2015 年 1 月更新:我刚好要解决这个确切的问题。您需要拥有带有 cPanel 电子邮件帐户的 GoDaddy Linux 主机:

  1. 在电子邮件帐户部分,在下拉菜单中的每个电子邮件地址旁边,单击“配置电子邮件客户端”选项。

  2. 在下一页上,向下滚动到“手动设置”。在这里,您会看到 GoDaddy 现在为每个电子邮件地址创建了一个定制的传入/传出服务器。因此,请使用传出服务器、SSL、auth:true、端口:465、电子邮件/密码。

希望有所帮助。

解决方案 15:

改变这个:

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

对此:

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

它对我有用!

解决方案 16:

如果在 WordPress 中使用 cPanel 和 WPForms

对我有帮助的是从 cPanel 创建电子邮件地址,并使用其手动设置部分中的设置(使用 SSL 或非 SSL)

在此处输入图片描述

解决方案 17:

Godaddy 是一场噩梦。

如果你正在使用较旧的工作空间电子邮件帐户,并且不熟悉 cpanel,请尝试此操作

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

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;
              }




}

解决方案 18:

刚刚遇到这个问题,联系了 GoDaddy,他们将我的 MX 从本地切换到远程,问题立即解决了!对于那些仍然遇到此问题的人来说,这只是一个提醒。

解决方案 19:

已更新于 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

解决方案 20:

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

注意:确保 URL 是在搜索栏中输入服务器 IP 和端口后解析的 URL,例如 0:0:0:0:2083

配置应该类似于

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

您也可以参考此处的链接

解决方案 21:

GoDaddy 服务器 SMTP 连接被拒绝。

Bigrock $mail->Port =587;// SMTP 服务器

GoDaddy $mail->Port =25;// SMTP 服务器

相关推荐
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   601  
  华为IPD与传统研发模式的8大差异在快速变化的商业环境中,产品研发模式的选择直接决定了企业的市场响应速度和竞争力。华为作为全球领先的通信技术解决方案供应商,其成功在很大程度上得益于对产品研发模式的持续创新。华为引入并深度定制的集成产品开发(IPD)体系,相较于传统的研发模式,展现出了显著的差异和优势。本文将详细探讨华为...
IPD流程是谁发明的   7  
  如何通过IPD流程缩短产品上市时间?在快速变化的市场环境中,产品上市时间成为企业竞争力的关键因素之一。集成产品开发(IPD, Integrated Product Development)作为一种先进的产品研发管理方法,通过其结构化的流程设计和跨部门协作机制,显著缩短了产品上市时间,提高了市场响应速度。本文将深入探讨如...
华为IPD流程   9  
  在项目管理领域,IPD(Integrated Product Development,集成产品开发)流程图是连接创意、设计与市场成功的桥梁。它不仅是一个视觉工具,更是一种战略思维方式的体现,帮助团队高效协同,确保产品按时、按质、按量推向市场。尽管IPD流程图可能初看之下显得错综复杂,但只需掌握几个关键点,你便能轻松驾驭...
IPD开发流程管理   8  
  在项目管理领域,集成产品开发(IPD)流程被视为提升产品上市速度、增强团队协作与创新能力的重要工具。然而,尽管IPD流程拥有诸多优势,其实施过程中仍可能遭遇多种挑战,导致项目失败。本文旨在深入探讨八个常见的IPD流程失败原因,并提出相应的解决方法,以帮助项目管理者规避风险,确保项目成功。缺乏明确的项目目标与战略对齐IP...
IPD流程图   8  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用