PHPMailer GoDaddy 服务器 SMTP 连接被拒绝
- 2024-10-12 10:28:00
- admin 原创
- 88
问题描述:
前几天,我在使用 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 只允许端口25
、465
、80
出去。因此,您无法访问未使用这 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 主机:
在电子邮件帐户部分,在下拉菜单中的每个电子邮件地址旁边,单击“配置电子邮件客户端”选项。
在下一页上,向下滚动到“手动设置”。在这里,您会看到 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 服务器
- 2024年20款好用的项目管理软件推荐,项目管理提效的20个工具和技巧
- 2024年开源项目管理软件有哪些?推荐5款好用的项目管理工具
- 项目管理软件有哪些?推荐7款超好用的项目管理工具
- 项目管理软件哪个最好用?盘点推荐5款好用的项目管理工具
- 项目管理软件有哪些最好用?推荐6款好用的项目管理工具
- 项目管理软件有哪些,盘点推荐国内外超好用的7款项目管理工具
- 2024项目管理软件排行榜(10类常用的项目管理工具全推荐)
- 项目管理软件排行榜:2024年项目经理必备5款开源项目管理软件汇总
- 2024年常用的项目管理软件有哪些?推荐这10款国内外好用的项目管理工具
- 项目管理必备:盘点2024年13款好用的项目管理软件