【问题标题】:Message could not be sent.Mailer Error: SMTP connect() failed无法发送邮件。邮件程序错误:SMTP 连接()失败
【发布时间】:2016-10-23 17:28:30
【问题描述】:

我已经浏览了 30++ 个主题,但不知道我犯了什么错误。也许不是我的人可以看到我做错了什么:无法发送邮件。邮件程序错误:SMTP 连接()失败。只是为了确保,我正在使用来自 github 的最新文件,但我无法完成它。托管是 az.pl 也许有人已经用它做点什么了吗?我删除了电子邮件+密码:)

<?php
$name = $_POST['nick'];
$visitor_email = $_POST['email'];
$visitor_tel = $_POST['tel'];
$message = $_POST['msg'];
require 'PHPMailerAutoload.php';

require_once('class.phpmailer.php');    // dodanie klasy phpmailer
require_once('class.smtp.php');    // dodanie klasy smtp
$mail = new PHPMailer();    //utworzenie nowej klasy phpmailer
$mail->isSMTP();
$mail->Host = "mailng.az.pl";    //adres serwera SMTP wysyłającego e-mail 
$mail->Mailer = "smtp";    //do wysłania zostanie użyty serwer SMTP
$mail->SMTPAuth = true;    //włączenie autoryzacji do serwera SMTP
$mail->Username = "";    //nazwa użytkownika do skrzynki e-mail
$mail->CharSet = 'UTF-8';
$mail->From = "";    //Pełny adres e-mail
$mail->FromName = "Formularz kontaktowy";    //imię i nazwisko lub nazwa     użyta do wysyłania wiadomości
$mail->Password = "";    //hasło użytkownika do skrzynki e-mail
$mail->Port = 587; //port serwera SMTP 
$mail->Subject = "Nowe zlecenie: $visitor_email";    //Temat wiadomości, można stosować zmienne i znaczniki HTML
$mail->Body = "Nazwa zleceniodawcy: $name \n";
 $mail->Body .="Email kontaktowy: $visitor_email \n";
 $mail->Body .=   "Telefon kontaktowy: $visitor_tel\n";
  $mail->Body .=  "Zlecenie: $message";  //Treść wiadomości, można stosować zmienne i znaczniki HTML 
$mail->SMTPSecure = 'tls';    // 
$mail->AddAddress ("","");    //adres skrzynki e-mail oraz nazwa
                                                //adresata, do którego trafi wiadomość
if(!$mail->send()) {
    echo 'Message could not be sent.';
    echo 'Mailer Error: ' . $mail->ErrorInfo;
} else {
    header('Location: emailsent.html');
}  
?>

【问题讨论】:

  • 使用 SMTPDebug = 1 我得到:2016-10-23 17:36:44 CLIENT -&gt; SERVER: EHLO lunicdesign.pl 2016-10-23 17:36:44 CLIENT -&gt; SERVER: STARTTLS 2016-10-23 17:36:44 SMTP Error: Could not connect to SMTP host. 2016-10-23 17:36:44 CLIENT -&gt; SERVER: QUIT 2016-10-23 17:36:44 SMTP ERROR: QUIT command failed: xutT�������;�i�D��M�6���� 2016-10-23 17:36:44 SMTP connect() 失败.``
  • 30 多篇文章并设法错过了将您的代码基于提供的示例的建议,并阅读了您看到的错误消息中链接的故障排除指南。

标签: php email smtp phpmailer


【解决方案1】:

为了其他使用 az.pl 的原因,这里更改了有效的脚本(没有 tls 并且注释掉了 $mail->isSMTP();)

<?php
    $name = $_POST['nick'];
    $visitor_email = $_POST['email'];
    $visitor_tel = $_POST['tel'];
    $message = $_POST['msg'];
  require 'PHPMailerAutoload.php';

require_once('class.phpmailer.php');    // dodanie klasy phpmailer
require_once('class.smtp.php');    // dodanie klasy smtp
$mail = new PHPMailer();    //utworzenie nowej klasy phpmailer
$mail->isSMTP();
$mail->Host = "mailng.az.pl";    //adres serwera SMTP wysyłającego e-mail 
$mail->Mailer = "smtp";    //do wysłania zostanie użyty serwer SMTP
$mail->SMTPAuth = true;    //włączenie autoryzacji do serwera SMTP
$mail->Username = "";    //nazwa użytkownika do skrzynki e-mail
$mail->CharSet = 'UTF-8';
$mail->From = "";    //Pełny adres e-mail
$mail->FromName = "Formularz kontaktowy";    //imię i nazwisko lub nazwa użyta do wysyłania wiadomości
$mail->Password = "";    //hasło użytkownika do skrzynki e-mail
$mail->Port = 587; //port serwera SMTP 
$mail->Subject = "Nowe zlecenie: $visitor_email";    //Temat wiadomości, można stosować zmienne i znaczniki HTML
$mail->Body = "Nazwa zleceniodawcy: $name \n";
 $mail->Body .="Email kontaktowy: $visitor_email \n";
 $mail->Body .=   "Telefon kontaktowy: $visitor_tel\n";
  $mail->Body .=  "Zlecenie: $message";  //Treść wiadomości, można stosować zmienne i znaczniki HTML 
$mail->SMTPSecure = '';    // 
$mail->SMTPAutoTLS = false;   //wyłączenie TLS
$mail->AddAddress ("","");    //adres skrzynki e-mail oraz nazwa
                                                //adresata, do którego trafi wiadomość
if(!$mail->send()) {
    echo 'Message could not be sent.';
    echo 'Mailer Error: ' . $mail->ErrorInfo;
} else {
    header('Location: emailsent.html');
}  
?>

【讨论】:

  • 这已经在其他地方被推荐过了。这通过不使用 SMTP 来“修复” SMTP。重要的是要了解代码为什么起作用,而不仅仅是它起作用。
  • 谢谢 Synchro,但我从来没有在任何地方(我看过的任何地方)看到空的 smtpsecure 并且随机地在 tls 和 ssl 之间切换:P 很好用 :) 我不是 PHP头,从来没有比我应该做的更多,但是在这节课之后 - 我需要:)
  • SMTPSecure 中的空字符串未定义。如果要禁用加密,请同时设置SMTPSecure = falseSMTPAutoTLs = false。但是,如果您使用的 ISP 需要通过未加密的连接进行身份验证,则该寻找新的 ISP。
猜你喜欢
  • 2014-02-17
  • 2013-09-01
  • 2016-08-14
  • 1970-01-01
  • 1970-01-01
  • 2018-01-18
  • 2018-06-16
  • 1970-01-01
  • 2020-12-08
相关资源
最近更新 更多