产品服务AMH 免费服务器主机面板SSL证书 免费SSL证书申请 担保单 免费安全、零费率交易平台编程助手免费智能写代码、翻译AMYSQL 免费MySQL管理工具

AMH 社区首页

 AMH社区 - 开放自由有价值的社区

[求助帖] 解决wordpress阿里云ECS以及虚拟主机发信问题

搬砖少年
银牌会员
1152.41 价值分

搬砖少年 发表于 2016-01-03 15:17:06
自己用阿里云ECSCentOS6.5无法发信,所以我到邻居 @完美之家 找到了解决办法。因为Wordpress默认为PHP发信,需要sendmail组件的支持,首先我们来检测一下渣里云的sendmail运行情况。检测sendmail是否运行正常(如果显示正在运行 running 就可以),用Xshell登陆服务器,依次运行以下命令:/etc/init.d/sendmail statushttps://dn-bzboy.qbox.me/wp-content/uploads/2015/12/0072-1.pngNo such file or directory。什么鬼,居然没有这个东西?接下来我们来安装sendmail。输入如下代码:yum install sendmailhttps://dn-bzboy.qbox.me/wp-content/uploads/2015/12/0072-2.png输入指令后回车,等待一会会显示如下代码:https://dn-bzboy.qbox.me/wp-content/uploads/2015/12/0072-3.pngTotal download size: 899 kInstalled size: 1.9 MIs this ok [y/N]:输入y回车确认安装。https://dn-bzboy.qbox.me/wp-content/uploads/2015/12/0072-4.pngDownloading Packages:(1/3): hesiod-3.1.0-19.el6.x86_64.rpm | 20 kB 00:00(2/3): procmail-3.22-25.1.el6_5.1.x86_64.rpm | 162 kB 00:00(3/3): sendmail-8.14.4-9.el6.x86_64.rpm | 716 kB 00:00—————————————————————————-Total 6.3 MB/s | 899 kB 00:00Running rpm_check_debugRunning Transaction TestTransaction Test SucceededRunning TransactionInstalling : hesiod-3.1.0-19.el6.x86_64 1/3Installing : procmail-3.22-25.1.el6_5.1.x86_64 2/3Installing : sendmail-8.14.4-9.el6.x86_64 3/3Verifying : procmail-3.22-25.1.el6_5.1.x86_64 1/3Verifying : sendmail-8.14.4-9.el6.x86_64 2/3Verifying : hesiod-3.1.0-19.el6.x86_64Installed:sendmail.x86_64 0:8.14.4-9.el6Dependency Installed:hesiod.x86_64 0:3.1.0-19.el6 procmail.x86_64 0:3.22-25.1.el6_5.1Complete!如果你看到Complete!说明安装已经完成,接下来我们再来检测一下sendmail的运行情况:/etc/init.d/sendmail status输入后回车,显示情况如下https://dn-bzboy.qbox.me/wp-content/uploads/2015/12/0072-5.pngsendmail is stoppedsm-client is stopped显然,sendmail并没有运行,接下来我们输入启动指令:/etc/init.d/sendmail start输入后回车,显示如下https://dn-bzboy.qbox.me/wp-content/uploads/2015/12/0072-6.pngStarting sendmail: [ OK ]Starting sm-client: [ OK ]显然,启动已经成功了,这时候再测试php发信(找回密码,注册验证)已经可以收到系统发送的邮件了。这里总结一下sendmail的指令/etc/init.d/sendmail status (检测sendmail是否运行正常running)yum install sendmail (安装sendmail)/etc/init.d/sendmail start (启动sendmail)/etc/init.d/sendmail stop (关闭sendmail)/etc/init.d/sendmail restart (重启sendmail)但是经常会出现一个问题,阿里云服务器php发信缓慢效率低下,虽然最后可以收到邮件,但页面基本都已经503资源耗尽了,所以我选择了SMTP发信来代替阿里云那狗效率。解决了阿里云ECS发信问题,再来看看万网等虚拟主机的问题。大多数虚拟主机如万网等都禁用了WordPress默认使用的PHP mail()发信函数,那么唯一的选择就是SMTP发信了,当然SMTP发信的好处是基本不会被邮件服务商归类为垃圾邮件。由于stream_socket_client函数同样被禁用,导致无法通过WordPress的SMTP接口发信,只能通过fsockopen函数来发信了。以万网主机为例,首先要保证在虚拟主机控制台开启了fsockopen函数。再者,打开wp-includes/class-smtp.php文件,大约202行找到:$this->smtp_conn = @stream_socket_client( $host . “:” . $port, $errno, $errstr,$timeout, STREAM_CLIENT_CONNECT, $socket_context );将上述代码删除或注释掉,改为以下代码:$this->smtp_conn = fsockopen($host, $port, $errno, $errstr);这样即可通过安装SMTP插件发送邮件,注意的是尽量选择SSL加密发信方式。[hr]在帮群里一个小伙伴儿解决他万网虚拟主机的问题时,他使用SMTP邮件插件之后,提示SMTP connect() failed。https://dn-bzboy.qbox.me/wp-content/uploads/2015/12/840996141644153713.jpg然后到插件主页去看了看,说无法链接到SMTP主机,防火墙阻塞。后来才知道,原来是那小伙伴儿SMTP服务没有开启。这里也提示大家一定要开启邮箱的SMTP等服务。https://dn-bzboy.qbox.me/wp-content/uploads/2015/12/219071586893758589.jpg最后我们开启STMP服务,然后输入相关配置,进行测试。https://dn-bzboy.qbox.me/wp-content/uploads/2015/12/test-ok.pngOK,大功告成。经测试,完全可以正常使用,SSL加密发信也成功测试。在下一节,搬砖少年会给大家介绍一个好用的wordprss邮件插件以及常用邮箱的相关配置和端口。



2016-01-03 15:17:06 1

David
铝牌会员
221.32 价值分

期待你的教程 谢谢分享
  支持 (0分)  反对 (0分)
回复  2016-01-04 19:17:51 2

搬砖少年
银牌会员
1152.41 价值分

引用:
David 发表于 2016-1-4 19:17
期待你的教程 谢谢分享


:loveliness: 不客气~~~
  支持 (0分)  反对 (0分)
回复  2016-01-13 18:37:38 3

lovem
银牌会员
2685.50 价值分

我用postfix 支持
  支持 (0分)  反对 (0分)
回复  2016-01-13 18:46:47 4

搬砖少年
银牌会员
1152.41 价值分

引用:
lovem 发表于 2016-1-13 18:46
我用postfix


支持 吼吼
  支持 (0分)  反对 (0分)
回复  2016-01-15 18:31:16 5
 1  (总1页)
AMH社区列表
用户服务中心