设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 创业者 手机 数据
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHPMailer发送邮件 SMTP 错误:无法连接到 SMTP 主机

发布时间:2022-01-21 13:53 所属栏目:121 来源:互联网
导读:PHPMailer是一个邮件发送插件有很多朋友使用它来发邮件,但也有不少朋友在使用期PHPMailer发邮件时就碰到SMTP 错误:无法连接到 SMTP 主机错(www.Cuoxin.com)误了,出现这种问题我们从几个点来分享,一个是邮箱配置有问题,另一个是我们的php.ini环境中有些函数没
  PHPMailer是一个邮件发送插件有很多朋友使用它来发邮件,但也有不少朋友在使用期PHPMailer发邮件时就碰到”SMTP 错误:无法连接到 SMTP 主机“错(www.Cuoxin.com)误了,出现这种问题我们从几个点来分享,一个是邮箱配置有问题,另一个是我们的php.ini环境中有些函数没开启导致的,下面我来给各位详细介绍一下问题的排除技巧.
 
  原因分析:出现这个问题说明无法解析 SMTP 主机 <主机 id> 的名称.
 
  解决办法,这个要看邮箱支付不支持pop3发送与接收邮件这个可以邮件官方看看,如QQ邮件.
 
  phpmailer error SMTP Error: Could not connect to SMTP host Could not instantiate mail function
 
  弄了半天,原来是不同邮件系统要求的smtp请求不同,但是都允许大写,有些不支持小写,比如网易,腾讯的邮箱.
 
  原来的设置:
 
  $mail->SMTPAuth = true;
  $mail->Mailer   = "smtp";
  $mail->Host = "smtp.qq.com";
  $mail->Port = 25; //设置邮件服务器的端口,默认为25
  $mail->Username = "8515888@qq.com";
  $mail->Password = "xxxxxxxxxx";
  把smtp改成大写就可以了:
 
  $mail->Mailer   = "SMTP";
 
  分析问题:
 
  还有大家就是使用了空间而不是服务器这样有可能像fsockopen、pfsockopen都禁用了,因为phpmailer需要使用fsockopen、pfsockopen才可以发邮件所以就会有问题了.
 
  解决办法:找到class.smtp.php文件,大约在文件的128行吧,有这样一段代码:
 
  // connect to the smtp server
      $th(www.Cuoxin.com)is->smtp_conn = @fsockopen($host,    // the host of the server
   $port,    // the port to use
   $errno,   // error number if any
   $errstr,  // error message if any
   $tval);   // give up after ? secs
  方法1:将fsockopen函数替换成pfsockopen函数
 
  因为pfsockopen的参数与fsockopen基本一致,所以只需要将@fsockopen替换成@pfsockopen就可以了.
 
  方法2:使用stream_socket_client函数
 
  一般fsockopen()被禁,pfsockopen也有可能被禁,所以这里介绍另一个函数stream_socket_client().
 
  stream_socket_client的参数与fsockopen有所不同,所以代码要修改为:
 
  $this->smtp_conn = stream_socket_client("tcp://".$host.":".$port, $errno,  $errstr,  $tval);
  这样就可以了.

(编辑:ASP站长网)

    网友评论
    推荐文章
      热点阅读