Cannot connenct to relay host smtp.163.com (php邮件发送失败)

2024-06-03 04:08

本文主要是介绍Cannot connenct to relay host smtp.163.com (php邮件发送失败),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

真是无语 搞了那么久,网上全部都说是 服务器php.ini 配置的问题,全tm都是抄的,误人子弟,好在 发现 该好贴,不过 阿里云 也真是 操蛋,屏蔽了25端口也不说,好吧!可能是我 没注意到。 扯淡完毕,下面是 解决问题的正文:

织梦自带了邮件发送功能,当我们在后台配置好了smtp信息后,如果还是发送邮件失败,可以通过下面的方法来定位。

PS:关注结果的站长们可以直接看第4、5步的结论,本例导致织梦邮件发送不出去的原因是阿里云禁用了25端口。
 
1、登陆dede网站后台,找到include/mail.class.php,先做好备份,然后对该文件做一些修改以打开debug日志,可以在后台用vi命令直接修改,也可以将该文件用ftp工具下载到本地电脑,修改后再上传覆盖,修改点如下:
a)修改$this->debug = TRUE; 表示打开debug日志
b)修改$this->log_file = "/yjdata/www/mail.log"; 表示输出日志到哪个地方
2、在后台,到上面$this->log_file指定的目录下用下面的命令创建mail.log文件,同时修改文件权限,命令如下
cd /yjdata/www/
touch mail.log
chmod 777 mail.log
 
3、上面的步骤完成后,再次做操作触发邮件的发送,比如注册用户、找回密码等等,这时候可以去查看日志,看看到底是什么原因,比如日志内容显示如下,Cannot connenct to relay host smtp.qq.com,然后就连接超时了。


4、网上很多类似问题的帖子说问题出现在服务器的环境配置上,检查方法如下:找到php.ini,查看两个参数,一个是allow_url_fopen,这个参数要设置成on;另一个是disable_functions,如果这个参数后面出现了fsock,fsockopen,则需要把这两个函数名去掉,完成后重启apache。不过这里不是这个原因导致的,因为这里的错误是,Error: Connection timed out (110),是连接超时,说明fsock方法是可用的,只是连不上邮件服务器;而前面说的服务器配置问题的错误会是Error: (),空,说明fsock方法不可用。按前面说的检查方法检查后发现配置的没问题,说明不是这个原因导致的。
 
5、那连接超时是什么原因导致的呢,一般我们配置的smtp服务器端口都是25,不过有的服务器或空间提供商把25端口给禁用了,比如阿里云就给禁用了,这个可以找相应的提供商确认一下。如果真是禁用了25端口,可以采用465端口,这个端口很多主流的邮件服务商像网易邮箱、QQ邮箱、阿里云邮箱也都支持,采用了465端口,织梦后台需要如下这么配置,注意, smtp服务器地址前面一定要加上ssl://,否则还是不可用。

 
6、这时候再重试,可以发送邮件了,查看日志显示如下

 
7、注意,问题解决后,记得还原include/mail.class.php,不在记录debug日志。

原文地址: https://www.imoban.me/baike/5.html

这篇关于Cannot connenct to relay host smtp.163.com (php邮件发送失败)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1025965

相关文章

消除安卓SDK更新时的“https://dl-ssl.google.com refused”异常的方法

消除安卓SDK更新时的“https://dl-ssl.google.com refused”异常的方法   消除安卓SDK更新时的“https://dl-ssl.google.com refused”异常的方法 [转载]原地址:http://blog.csdn.net/x605940745/article/details/17911115 消除SDK更新时的“

ORACLE 11g 创建数据库时 Enterprise Manager配置失败的解决办法 无法打开OEM的解决办法

在win7 64位系统下安装oracle11g,在使用Database configuration Assistant创建数据库时,在创建到85%的时候报错,错误如下: 解决办法: 在listener.ora中增加对BlueAeri-PC或ip地址的侦听,具体步骤如下: 1.启动Net Manager,在“监听程序”--Listener下添加一个地址,主机名写计

STM32 ADC+DMA导致写FLASH失败

最近用STM32G070系列的ADC+DMA采样时,遇到了一些小坑记录一下; 一、ADC+DMA采样时进入死循环; 解决方法:ADC-dma死循环问题_stm32 adc dma死机-CSDN博客 将ADC的DMA中断调整为最高,且增大ADCHAL_ADC_Start_DMA(&hadc1, (uint32_t*)adc_buffer, ADC_Buffer_Size); 的ADC_Bu

PHP原理之内存管理中难懂的几个点

PHP的内存管理, 分为俩大部分, 第一部分是PHP自身的内存管理, 这部分主要的内容就是引用计数, 写时复制, 等等面向应用的层面的管理. 而第二部分就是今天我要介绍的, zend_alloc中描写的关于PHP自身的内存管理, 包括它是如何管理可用内存, 如何分配内存等. 另外, 为什么要写这个呢, 因为之前并没有任何资料来介绍PHP内存管理中使用的策略, 数据结构, 或者算法. 而在我们

php中json_decode()和json_encode()

1.json_decode() json_decode (PHP 5 >= 5.2.0, PECL json >= 1.2.0) json_decode — 对 JSON 格式的字符串进行编码 说明 mixed json_decode ( string $json [, bool $assoc ] ) 接受一个 JSON 格式的字符串并且把它转换为 PHP 变量 参数 json

Android中如何实现adb向应用发送特定指令并接收返回

1 ADB发送命令给应用 1.1 发送自定义广播给系统或应用 adb shell am broadcast 是 Android Debug Bridge (ADB) 中用于向 Android 系统发送广播的命令。通过这个命令,开发者可以发送自定义广播给系统或应用,触发应用中的广播接收器(BroadcastReceiver)。广播机制是 Android 的一种组件通信方式,应用可以监听广播来执行

如何将文件夹里的PHP代码放到一个文件里

find ./dir -name "*.php" -exec 'cat' {} \; > dir.out

PHP抓取网站图片脚本

方法一: <?phpheader("Content-type:image/jpeg"); class download_image{function read_url($str) { $file=fopen($str,"r");$result = ''; while(!feof($file)) { $result.=fgets($file,9999); } fclose($file); re

PHP防止SQL注入详解及防范

SQL 注入是PHP应用中最常见的漏洞之一。事实上令人惊奇的是,开发者要同时犯两个错误才会引发一个SQL注入漏洞。 一个是没有对输入的数据进行过滤(过滤输入),还有一个是没有对发送到数据库的数据进行转义(转义输出)。这两个重要的步骤缺一不可,需要同时加以特别关注以减少程序错误。 对于攻击者来说,进行SQL注入攻击需要思考和试验,对数据库方案进行有根有据的推理非常有必要(当然假设攻击者看不到你的

PHP防止SQL注入的方法(2)

如果用户输入的是直接插入到一个SQL语句中的查询,应用程序会很容易受到SQL注入,例如下面的例子: $unsafe_variable = $_POST['user_input'];mysql_query("INSERT INTO table (column) VALUES ('" . $unsafe_variable . "')"); 这是因为用户可以输入类似VALUE”); DROP TA