phpmailer发信时遇见了一个很苦逼的问题

时间:2022-03-18 18:12:33
各位大大好!我遇见了一个很苦逼的发信问题,先贴下问题的细节
SMTP -> FROM SERVER: 250-m1.mydomain.com
250-PIPELINING
250-SIZE 15728640
250-VRFY
250-ETRN
250-STARTTLS
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
CLIENT -> SMTP: STARTTLS
SMTP -> FROM SERVER:220 2.0.0 Ready to start TLS
CLIENT -> SMTP: EHLO localhost.localdomain
250-PIPELINING
250-SIZE 15728640
250-VRFY
250-ETRN
250-AUTH PLAIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
SMTP -> ERROR: AUTH not accepted from server: 535 5.7.8 Error: authentication failed: Invalid authentication mechanism
CLIENT -> SMTP: RSET
SMTP -> FROM SERVER:250 2.0.0 Ok
CLIENT -> SMTP: MAIL FROM:
SMTP -> FROM SERVER:250 2.1.0 Ok
CLIENT -> SMTP: RCPT TO:
SMTP -> FROM SERVER:554 5.7.1 : Relay access denied
SMTP -> ERROR: RCPT not accepted from server: 554 5.7.1 : Relay access denied
CLIENT -> SMTP: quit
SMTP -> FROM SERVER:221 2.0.0 Bye

上面的错误,是我碰到的,有提示 Invalid authentication mechanism ,没有开启这个认证.
我就跑到 DOVECOT 认证服务器上加上了一个认证,现在的认证方式有 PLAIN 和 LOGIN
现在认证是通过了.不过又出现了新的问题.
新的问题如下.
SMTP -> FROM SERVER:220 m2.mydomain.com ESMTP hair
CLIENT -> SMTP: EHLO localhost.localdomain
SMTP -> FROM SERVER: 250-m2.mydomain.com
250-PIPELINING
250-SIZE 15728640
250-VRFY
250-ETRN
250-STARTTLS
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
CLIENT -> SMTP: STARTTLS
SMTP -> FROM SERVER:220 2.0.0 Ready to start TLS
CLIENT -> SMTP: EHLO localhost.localdomain
SMTP -> FROM SERVER: 250-m2.mydomain.com
250-PIPELINING
250-SIZE 15728640
250-VRFY
250-ETRN
250-AUTH PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
CLIENT -> SMTP: AUTH LOGIN
CLIENT -> SMTP: c2VydmljZUBoYWlyb25saW5lc2FsZS5jb20=
CLIENT -> SMTP: QURGYXMmZlNIa2pQI2E=
SMTP -> ERROR: Password not accepted from server: 535 5.7.8 Error: authentication failed:UGFzc3dvcmQ6                                                                                       
CLIENT -> SMTP: RSET
SMTP -> FROM SERVER:250 2.0.0 Ok
CLIENT -> SMTP: MAIL FROM:<service@mydomain.com>
SMTP -> FROM SERVER:250 2.1.0 Ok
CLIENT -> SMTP: RCPT TO:<to@163.com>
SMTP -> FROM SERVER:554 5.7.1 <to@163.com>: Relay access denied
SMTP -> ERROR: RCPT not accepted from server: 554 5.7.1 <to@163.com>: Rel                                                                                        ay access denied
CLIENT -> SMTP: quit
SMTP -> FROM SERVER:221 2.0.0 Bye

现在的提示是认证失败,你玛,怎么会出现此种坑爹的情况
我在FOXMAIL上用这个密码发的好好的,怎么会这样.
下面帖上我发信时的代码
require_once('class.phpmailer.php');
$mail = new PHPMailer();
$mail->IsSMTP();
$mail->Host = "m2.mydomain.com";
$mail->Port = 26;
$mail->SMTPAuth = true;
$mail->SetFrom('service@mydomain.com', 'lopl.net');
$mail->AddReplyTo('service@mydomain.com', 'lopl.net');
$mail->Username = 'service@mydomain.com';
$mail->Password = 'mypassword';
$mail->AddAddress("to@163.com");
$mail->Subject = "New Fax";
$mail->SMTPDebug = 3;
$mail->SMTPSecure = 'tls'; // or $mail->SMTPSecure = 'ssl';
$mail->Body = "You have new FAX ";
$mail->Send();
echo "Error sending: " . $mail->ErrorInfo;

另:当用PHPMAILER发信时,出现以上两种情况的时候,用FOXMAIL测试,均是正常.请大神救命.在此拜谢!!!

9 个解决方案

#1


不知道为什么是 $mail->Port =  26;

#2


端口都没问题

#3


现在是用PHPMAILER发,提示密码通不过.
但是FOXMAIL是好的,一直可以正常发送....

#4


phpmailer发信时遇见了一个很苦逼的问题

#5


你的开发环境是什么,有没有禁用了PHPMailer里面的自带函数,例如fsockopen函数被禁用了?

#6


fsockopen函数没被禁用,开发环境就是LAMP,没有禁用自带的函数..

#7


我也遇到类似问题,说什么phpmailer EHLO not accepted from server, 但是这个帐号在foxmail中是正常发送给自己的。利用phpmailer自己发给自己不行,自己发给别人就可以,真是个让人抓狂的问题。

#8


修改emil_api.php中的 email_send 函数中的:

if( is_null( $g_phpMailer ) ) {
          if ( $t_mailer_method == PHPMAILER_METHOD_SMTP ) {
               register_shutdown_function( 'email_smtp_close' );
          }
          $mail = new PHPMailer(true);
          /**
          * 添加发送邮件的参数
          * @author [pooy] <[pooy@pooy.net]>
          */
          $mail->SMTPDebug = 1;          //生产环境中去掉
          $mail->SMTPAuth = true;        // Enable SMTP authentication
          $mail->Port = 25;   //所有发信默认端口25 个别特殊的是465 谷歌QQ163         
          $mail->SMTPSecure = 'ssl';      
     } else {
          $mail = $g_phpMailer;
     }

其他的就是配置好用户名 密码 SMTP_host,用Foxmail其他客户端可以收发是因为默认SMTPAuth = true

#9


引用 8 楼 QueenJade 的回复:
修改emil_api.php中的 email_send 函数中的:

if( is_null( $g_phpMailer ) ) {
          if ( $t_mailer_method == PHPMAILER_METHOD_SMTP ) {
               register_shutdown_function( 'email_smtp_close' );
          }
          $mail = new PHPMailer(true);
          /**
          * 添加发送邮件的参数
          * @author [pooy] <[pooy@pooy.net]>
          */
          $mail->SMTPDebug = 1;          //生产环境中去掉
          $mail->SMTPAuth = true;        // Enable SMTP authentication
          $mail->Port = 25;   //所有发信默认端口25 个别特殊的是465 谷歌QQ163         
          $mail->SMTPSecure = 'ssl';      
     } else {
          $mail = $g_phpMailer;
     }

其他的就是配置好用户名 密码 SMTP_host,用Foxmail其他客户端可以收发是因为默认SMTPAuth = true
文件路径在
mantisbt\core\emil_api.php

#1


不知道为什么是 $mail->Port =  26;

#2


端口都没问题

#3


现在是用PHPMAILER发,提示密码通不过.
但是FOXMAIL是好的,一直可以正常发送....

#4


phpmailer发信时遇见了一个很苦逼的问题

#5


你的开发环境是什么,有没有禁用了PHPMailer里面的自带函数,例如fsockopen函数被禁用了?

#6


fsockopen函数没被禁用,开发环境就是LAMP,没有禁用自带的函数..

#7


我也遇到类似问题,说什么phpmailer EHLO not accepted from server, 但是这个帐号在foxmail中是正常发送给自己的。利用phpmailer自己发给自己不行,自己发给别人就可以,真是个让人抓狂的问题。

#8


修改emil_api.php中的 email_send 函数中的:

if( is_null( $g_phpMailer ) ) {
          if ( $t_mailer_method == PHPMAILER_METHOD_SMTP ) {
               register_shutdown_function( 'email_smtp_close' );
          }
          $mail = new PHPMailer(true);
          /**
          * 添加发送邮件的参数
          * @author [pooy] <[pooy@pooy.net]>
          */
          $mail->SMTPDebug = 1;          //生产环境中去掉
          $mail->SMTPAuth = true;        // Enable SMTP authentication
          $mail->Port = 25;   //所有发信默认端口25 个别特殊的是465 谷歌QQ163         
          $mail->SMTPSecure = 'ssl';      
     } else {
          $mail = $g_phpMailer;
     }

其他的就是配置好用户名 密码 SMTP_host,用Foxmail其他客户端可以收发是因为默认SMTPAuth = true

#9


引用 8 楼 QueenJade 的回复:
修改emil_api.php中的 email_send 函数中的:

if( is_null( $g_phpMailer ) ) {
          if ( $t_mailer_method == PHPMAILER_METHOD_SMTP ) {
               register_shutdown_function( 'email_smtp_close' );
          }
          $mail = new PHPMailer(true);
          /**
          * 添加发送邮件的参数
          * @author [pooy] <[pooy@pooy.net]>
          */
          $mail->SMTPDebug = 1;          //生产环境中去掉
          $mail->SMTPAuth = true;        // Enable SMTP authentication
          $mail->Port = 25;   //所有发信默认端口25 个别特殊的是465 谷歌QQ163         
          $mail->SMTPSecure = 'ssl';      
     } else {
          $mail = $g_phpMailer;
     }

其他的就是配置好用户名 密码 SMTP_host,用Foxmail其他客户端可以收发是因为默认SMTPAuth = true
文件路径在
mantisbt\core\emil_api.php