PHPMailer和GoDaddy

时间:2018-10-16 22:36:46

标签: php phpmailer

我的问题很简单:使用PHPMailer发送电子邮件,我遵守了哥达的规则:

$mail = new PHPMailer();
$mail->IsSMTP(); 
$mail->SMTP_AUTH = false;
$mail->Port = 25;
$mail->Host = "relay-hosting.secureserver.net"; 
$mail->FromName = "mycomercial@mycomercialemail.com.br"; 

$mail->SMTPDebug = 2;
$mail->Subject = "Test";
$mail->Body = "hello";
$mail->AddAddress("mygmailemail@gmail.com");

if(!$mail->Send()) {
    echo "Error: " . $mail->ErrorInfo;
} else {
    echo "Message has been sent";
}

此代码是我在许多搜索的论坛中看到的代码,但是我仍然无法发送电子邮件,收到的是:

  

2018-10-16 22:31:25 SMTP错误:无法连接到服务器:连接被拒绝(111)2018-10-16 22:31:25 SMTP connect()失败

这是他们推荐的服务器?为什么我无法连接?谢谢大家的帮助

2 个答案:

答案 0 :(得分:1)

好吧,我已经联系了goDaddy支持人员(非常好),他们说要在服务器内部使用localhost,所以我更改了代码,仍然无法正常工作,但至少已连接到服务器并给了我错误:STARTTLS ,在网上搜索后,我发现了以下解决方案:solution

$mail = new PHPMailer(true);
$mail->IsSMTP(); // Using SMTP.
$mail->SMTPDebug = 1;
$mail->SMTPAuth = false; // Enables SMTP authentication.
$mail->Host = "localhost"; // GoDaddy support said to use localhost
$mail->Port = 25;
$mail->SMTPSecure = 'none';

//havent read yet, but this made it work just fine
$mail->SMTPOptions = array(
    'ssl' => array(
        'verify_peer' => false,
        'verify_peer_name' => false,
        'allow_self_signed' => true
    )
);

$mail->AddReplyTo('comercial@email.com.br', 'Me');
$mail->AddAddress('my@gmail.com', 'Them'); 
$mail->SetFrom('comercial@email.com.br', 'Me');
$mail->Subject = 'PHPMailer Test Subject via smtp, basic with authentication';
$mail->AltBody = 'To view the message, please use an HTML compatible email viewer!';
$mail->MsgHTML("Hi, this is an test email");
if(!$mail->Send()) {
    echo "Mailer Error: " . $mail->ErrorInfo;
} else {
    echo "Message has been sent";
}

最后,他们还给了我这个脚本:Github以三种不同的方式测试发送的电子邮件,但是此脚本发送的电子邮件可能进入了您的垃圾邮件(第一个脚本正常),所以他们说这是使用TXT记录和DNS配置某些内容所必需的,这是支持人员提供给我的数据:

  

添加TXT记录

     

主持人:@

     

TXT值:v = spf1一个mx ptr包括:secureserver.net -all

     

TTL:1小时

但是我对此不确定,因为我不得不去看医生,因此我无法留下这个解决方案,谢谢大家。

答案 1 :(得分:0)

问题是通过goDaddy进行的SMTP连接有点棘手,因为它们对发送电子邮件施加了严格的限制。如果不需要SMTP,则可以使用以下代码强制phpMailer使用内置的mail()函数:

$mail = new PHPMailer();
$mail->isMail(); //using mail() function