Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

Discuz x3.4 fundtion/function_mail.php ssl socket连接必现失败

[复制链接]
ヾJíēじ☆ 发表于 2018-3-19 15:00:15 | 显示全部楼层 |阅读模式


以下测试机器环境以及是否邮件发送存在问题,我先是测试(输出如截图左侧,可以正常链接socket,并且获取到正确的链接):

  1. <?php
  2. // The server details that worked for you in the above step
  3. $smtp_host = 'ssl://smtp.exmail.qq.com';
  4. //The port that worked for you in the above step
  5. $smtp_port = 465;

  6. $socket = fsockopen($smtp_host, $smtp_port, $errno, $errstr, 30);
  7. echo "$socket 123\n";
  8. if (!($socket = fsockopen($smtp_host, $smtp_port, $errno, $errstr, 30)))
  9. {
  10.   echo "Error connecting to '$smtp_host' ($errno) ($errstr)";
  11. }

  12. $lastmessage = fgets($socket, 512);
  13. if(substr($lastmessage, 0, 3) == '220') {
  14.     echo $lastmessage;
  15.     echo substr($lastmessage, 0, 3);
  16.     fclose($socket);
  17. }
  18. ?>
复制代码
但是相同的代码,在source/function/function_main.php 中,却始终链接不上socket,不是超时,而是直接返回空,并且错误码为0

  1.         } elseif($_G['setting']['mail']['mailsend'] == 2) {
  2.                 // The server details that worked for you in the above step
  3.                 $smtp_host = 'ssl://smtp.exmail.qq.com';
  4.                 //The port that worked for you in the above step
  5.                 $smtp_port = 465;
  6.    //             $smtp_host = $_G['setting']['mail']['server'];
  7.     //            $smtp_port = $_G['setting']['mail']['port'];

  8.                 if(!($fp = fsockopen($smtp_host, $smtp_port, $errno, $errstr, 30))) {
  9.                         runlog('SMTP', "($smtp_host $smtp_port $errno $errstr) CONNECT - Unable to connect to the SMTP server, ", 0);
  10.                         return false;
  11.                 }
  12.                 stream_set_blocking($fp, true);

  13.                 $lastmessage = fgets($fp, 512);
  14.                 if(substr($lastmessage, 0, 3) != '220') {
  15.                         runlog('SMTP', "{$_G[setting][mail][server]}:{$_G[setting][mail][port]} CONNECT - $lastmessage", 0);
  16.                         return false;
  17.                 }

  18.                 fputs($fp, ($_G['setting']['mail']['auth'] ? 'EHLO' : 'HELO')." uchome\r\n");
  19.                 $lastmessage = fgets($fp, 512);
  20.                 if(substr($lastmessage, 0, 3) != 220 && substr($lastmessage, 0, 3) != 250) {
  21.                         runlog('SMTP', "({$_G[setting][mail][server]}:{$_G[setting][mail][port]}) HELO/EHLO - $lastmessage", 0);
  22.                         return false;
  23.                 }
复制代码



您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2024-11-23 18:31 , Processed in 0.019547 second(s), 3 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表