阿里云虚拟主机WordPress无法发送邮件解决方案
<p>因阿里云虚拟主机禁用了mail()函数,导致WordPress系统无法使用默认mail()函数发送邮件,即便改用SMTP插件也无法成功发送(因为阿里云虚拟主机提供的是fsockopen,而SMTP所使用的是steam_connect_client),因此想要实现SMTP成功发送邮件,就要修改wordpress程序源文件class-smtp.php,把wordpres的SMTP发送方式改为fsockopen方式。</p>
<p style="text-align: center;">
<img style="max-width:100%!important;height:auto!important;"title="阿里云虚拟主机WordPress无法发送邮件解决方案" alt="阿里云虚拟主机WordPress无法发送邮件解决方案" src="https://zhuji.jb51.net/uploads/img/202305/b6c7033c640946d67596a844c63c23ff.jpg"></p>
<p>
1、登录阿里云主机管理控制台,进入:站点信息-高级环境设置-php.ini设置,PHP函数fsockopen设置:启用</p>
<p>
2、修改wordpress系统文件,打开 /wp-includes/class-smtp.php,在274-283 行位置,查找以下代码:</p>
<div>
<ol>
<li>
<span><span>$socket_context = stream_context_create($options); </span></span>
</li>
<li>
<span><span>//Suppress errors; connection failures are handled at a higher level</span><span> </span></span>
</li>
<li>
<span>$<span>this</span><span>->smtp_conn = @stream_socket_client( </span></span>
</li>
<li>
<span> $host . <span>":"</span><span> . $port, </span></span>
</li>
<li>
<span> $errno, </span>
</li>
<li>
<span> $errstr, </span>
</li>
<li>
<span> $timeout, </span>
</li>
<li>
<span> STREAM_CLIENT_CONNECT, </span>
</li>
<li>
<span> $socket_context </span>
</li>
<li>
<span>); </span>
</li>
</ol>
</div>
<p>
替换为以下代码:</p>
<div>
<ol>
<li>
<span><span>$</span><span>this</span><span>->smtp_conn = @fsockopen($host,$port,$errno,$errstr,$timeout); </span></span>
</li>
</ol>
</div>
<p>
然后使用Easy WP SMTP或 WP MAIL SMTP 这类 SMTP 发送邮件的插件,配置好一般就可以了。</p>
<p>
<strong>特别注意:由于这个方法是直接修改了 WordPress 的核心代码,一旦升级了 WordPress 版本,就需要重新进行修改,切记!!!</strong></p>
<p>
原文地址:https://www.themebest.com/aliyun-mail-failure/</p>
頁:
[1]