簡體   English   中英

PHPMailer GoDaddy 服務器 SMTP 連接被拒絕

[英]PHPMailer GoDaddy Server SMTP Connection Refused

前幾天,我在使用 GoDaddy 托管網站時遇到了一些問題。 我打電話給他們的技術支持,與我交談的人建議我的問題與我在 Windows 盒子上的事實有關,在 Linux 盒子上會更好。 對此沒有意見,我同意了,他們把我換了。

在這種轉變之后,我的 PHPMailer 功能已經離我而去。 我已經使用了幾個月,所以我知道我的設置是准確的。 我已與 GoDaddy 確認,從他們的角度來看,我嘗試發送的帳戶沒有改變。 用戶端未進行任何更改(如新密碼)。 最重要的是,唯一不同的是我的網站現在托管在 Linux 服務器上。 就是這樣。

所以我認為我的 PHPMailer 問題一定與此有關,因為在服務器轉換發生的確切時刻,一個已經工作了幾個月的腳本失敗了,這太巧合了。 但為什么? 我在他們的技術支持上花了一個小時,他們沒有發現服務器設置有任何問題。 我們驗證了我的設置(只是為了好玩)。 一切看起來都很好,但是當我發送 email 時,我收到了這個錯誤:

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地址修改服務器、用戶名、密碼等。

我在像@surfbird0713 這樣的 Linux 上使用 GoDaddy。 在我的第 32 次嘗試中,以下內容也對我有用:

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

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

//$mail2->Port = 465;

我之前嘗試使用用戶名、登錄名、端口等。當我注釋掉所有這些時,只使用 localhost 就可以了。

由於這似乎是一個持續存在的問題,讓我添加我自己的經驗。

我們的網站使用 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 電子郵件帳戶。 歡呼! 時間表? “……在接下來的兩三年內!”

3) 我在與代表通電話時將我們的帳戶從 Workspace 轉移到了 cPanel 帳戶。 真的很容易做到。

4) 在您將電子郵件帳戶(包括編輯您的 MX 記錄)更改為 cPanel 電子郵件(與“工作區”電子郵件)后,使用 PHPMailer 的網絡表單電子郵件的適當設置是:

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

......和其他一切(如上)相同......

我使用 PHPMailer 構建的網絡表單在此更改后完美運行!

在 PHPMailer 設置中使用您的 cPaneL 電子郵件帳戶登錄名(用戶名)和密碼,您的網絡電子郵件將無縫運行!

一個額外的好處是可以在 [yourdoman]\\webmail 訪問 webmail(還有人使用它嗎?)。 不再需要記住神秘的網址! 帳戶可以是 IMAP 或 POP!

誠然,這意味着您必須使用 goDaddy 的 cPanel 電子郵件帳戶,但讓網絡表單與 PHPMailer 完美配合才是真正的獎勵!

在經歷了很多挫折之后,這也對我有用。

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();

?>

我已經遇到這個問題很多周了。 終於,得到了解決。 首先,我要說明問題的原因(正如我所經歷的那樣)。 GoDaddy 只允許端口2546580退出。 因此,您無法訪問任何未使用這 3 個端口中的任何一個的 SMTP 服務器。 但是,如果您在每個示例中使用來自 GMAIL 的 SMTP 或任何其他重播服務器(尤其是來自加拿大貝爾的465端口),那么來自 GoDaddy 的任何中繼請求都將被阻止 - 因此您將看到Connection Refused (111) 是的,他們是托管服務的競爭對手……因此,請就他們之間何時解決此問題得出自己的結論。 更糟糕的是,當您從 GoDaddy 提供的relay-hosting.secureserver.net發送電子郵件時,您會面臨長時間排隊的重大不便,可能需要幾分鍾才能將電子郵件發送出去。 更糟糕的是,擁有 Bell Canada(或 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 事情......這對我來說很好用。 我希望它對你也一樣。

這些將是 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;

早些時候為了讓它工作,GoDaddy SMTP 主機是:

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

然后GoDaddy SMTP 主機改為:

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

但是現在正常工作的 GoDaddy SMTP 主機是:

$mail->Host = 'localhost';

您也可以保留“SMTPAuth = false”和“Username/Password = Blank”。 如果您使用的是 GoDaddy 主機 Email 或 GoDaddy cPanel Email,這並不重要。

代碼的主線是,所以請確保包含它:

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

我有同樣的問題但我試過這個

$mail->SMTPAuth = false;

和 HOSTNAME: relay-hosting.secureserver.net

和Bingoooooo它的工作

請在 SMTP 中進行一次此設置

根據 Godaddy 的說法,替換

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

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

它對我有用。

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值使用任何您想要的電子郵件/名稱。 希望這可以幫助。

使用上面的一些建議,我能夠在 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 服務器顯然存在很多問題 - 我發現您可以通過使用他們提供的不需要身份驗證的中繼服務器來繞過它,盡管它們仍然可以與您注冊的電子郵件帳戶之一相關聯。

希望對某人有所幫助! 干杯!

在與這個問題搏斗了幾天並讓它工作后,我想我會在 2017 年更新這個線程。希望我可以節省一些人浪費的幾個小時。 我使用 cpanel 托管在 Godaddy 上。 這是我最終遇到並嘗試過的 SMTPAutoTLS 設置,這是缺失的部分。 我收到的錯誤如下:

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

郵件程序錯誤: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;  

好吧,我解決了這個問題,但不是很好。 在用盡我能想到的一切之后,我只是舉起雙手告訴 GoDaddy 將我切換回 Windows 服務器。 一旦他們這樣做了,問題就消失了。 因為我並不真正關心我在什么類型的服務器上,所以這個結果是令人滿意的,但很難令人滿意。

因此,對於任何認為自己已正確設置 PHPMailer 但無法使其工作的 GoDaddy 客戶,我的建議是確定您是否在 Linux 服務器上。 在我看來,GoDaddy 已經設置了他們的 Linux 服務器來阻止這種類型的郵件交易。 我不能肯定地說,因為我只相信那是因為我沒能成功。 但我可以明確地說,我的 PHPMailer 設置是准確的,至少在 Windows 上是這樣。

也許這將有助於節省一些時間和挫折。 如果有人有更好的想法,請發表。

改變這個:

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

對此:

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

它對我有用!

如果您的主機上有自己的電子郵件服務器,則您的電子郵件服務器使用以下端口 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;

2015 年 1 月更新:我只需要解決這個確切的問題。 您需要擁有帶有 cPanel 電子郵件帳戶的 GoDaddy linux 主機:

  1. 在電子郵件帳戶部分,在下拉列表中的每個電子郵件地址旁邊,單擊“配置電子郵件客戶端”選項。
  2. 在下一頁上,向下滾動到“手動設置”。 在這里,您將看到 GoDaddy 現在為每個電子郵件地址創建定制的傳入/傳出服務器。 所以使用外發服務器、SSL、auth:true、端口:465、電子郵件/密碼。

希望有幫助。

如果在 WordPress 中使用 cPanel 和 WPForms

幫助我的是從 cPanel 創建電子郵件地址,並使用 SSL 或非 SSL 的手動設置部分的設置

在此處輸入圖片說明

Godaddy 是個噩夢。

如果您使用的是較舊的工作空間電子郵件帳戶並且不熟悉 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;
              }




}

剛遇到這個問題,聯系了 GoDaddy,他們將我的 MX 從本地切換到遠程,它立即解決了問題! 只是提醒仍然遇到此問題的任何人。

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

經過數小時的艱苦工作,我意識到使用 go daddy,為 SSL 和 TLS 提供的配置郵件客戶端主機詳細信息不起作用。 出於這個原因,您必須將 Cpanel url 的一部分復制為您的主機。

**注意:**確保在搜索欄上輸入您的服務器 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'));

你也可以在這里參考這個鏈接

GoDaddy 服務器 SMTP 連接被拒絕。

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM