有许多的虚拟主机都禁止了 MAIL 函数,当然、也是因为防止垃圾邮件的诞生,但是也影响了一部分客户
许多的用户就会选择使用 SMTP 来发送邮件,但是有些主机看着探针支持 SMTP 但是却无法发邮件是啥回事?今天我就来说说几种解决方式吧,如果遇见了错误但不懂如何解决的请看!(以Wordpress示范)
一、修改发信端口
这个是最低级的一个错误之一,就是端口错误。很多人喜欢乱写,但是常用的有 25、465、587 等。
如果使用常用无 SSL 发信端口没有用的话,就用 SSL 的!例如 465 这样(许多邮箱的端口不同)的端口。
二、替换发信函数
正常情况下 SMTP 都是使用 fsockopen 函数来发信的,当然、如果禁用了我们还可以用其他的!
- 替换为 pfsockopen 函数:
在 “wp-includes” 下找到 “class-smtp.php” 并搜索 “fsockopen” 大约会得出以下结果:
在前面加一个 “p” 就可以了,最好是小写。然后保存上传,如果无误的话、你的网站已经可以发信了。
- 使用 stream_socket_client 函数:
同样是找到 “class-smtp.php” 并搜索 “fsockopen”,替换如下代码:
1 | @fsockopen($host, |
把上面的代码替换成:
1 | @stream_socket_client($host.":".$port, |
如果不是很懂的话,请看图:
如果第一种方法不行,这种方法一般都是不行的了 …… 不要沮丧,有高手还自定义函数的、我就不介绍了
三、使用一些神奇的插件
这个可能性就非常的小啦,不过先前看到有一个人发布的一个插件、可以支持任意主机发信。具体的可能是本地收取了发信内容之后:传送到发信平台(私人或公有的发信服务器、类似百度 BCMS 这种),然后同意进行传送。
我没有多余的服务器,我也就不搞这些事情了。有时间的话我会去做一个 BCMS 的插件如何呢?