今天才发现openshift的服务器竟然无法使用PHP发送邮件函数发送邮件.起因是今天早晨登录博客发现待审核评论3条.但我没有收到一封提示邮件.于是我果断的判断是openshift禁用了某些函数.当然openshift是一个极度开放的云空间.如果有耐心研究可以通过SSH控制台和修改一些配置文件例如PHP.ini来尝试解决.至于是不是PHP函数的限制我们如何来确认呢?接下来带来几种方法.

方法一:PHP探针
这种方法是最简单的方法.我们直接上传一个PHP探针就可以确认系统是否支持发送邮件.

这里openshift很奇怪.因为探针提示我们发送成功,证明系统支持mail函数.但是我却的邮箱无法收到邮件.

方法二:查看phpinfo
使用探针或者新建立一个PHP文件,输入以下代码

即可打开PHPinfo.这里面有PHP的全部配置信息.(由于部分值中含有我的用户名以及服务器名,所以已被覆盖.)

找到sendmail_path组件如果值为-t -i则支持mail()
特别注意:由于phpinfo会泄露PHP配置信息,尤其openshift用户注意:phpinfo会泄露openshift用户的MySQL主机/root用户名/root用户密码和Cookie信息,请务必小心,使用完毕尽快删除!

方法三:编写一个测试发送邮件的代码
新建一个PHP文档,输入以下代码

系统会发送一条邮件到你的邮箱
或者输入

来查看.如果通过以上方法证明PHP邮件函数正常则检查您填写的邮箱是否正确..如果确认无法使用PHPmail函数我们还可以通过SMTP代替发送邮件.但是SMTP的配置略为麻烦…(我们需要SMTP服务器,一般主流电子邮箱均提供本服务.在这里使用Gmail演示.现已确认腾讯邮箱支持SMTP服务器.)
一般的空间SMTP和PHPmail会至少支持一样,如果都不支持请和空间商联系..首先确认系统是否支持SMTP.使用探针即可查看.

如果确认支持那么我们就可以开始配置了.首先我们需要安装插件Configure SMTP直接在应用中心搜索即可.
安装后进行配置.

我基本上用中文解释了一下..如果依然看不懂可以咨询我..

保存设置并且发送一封测试邮件.
PS.在这里Gmail可能会提示发送失败.原因是你异地登陆了.[使用你的服务器的IP登陆SMTP服务器]可能会被谷歌拒绝.一般解决方法是使用浏览器登陆并且进行电话验证.
如果成功收到测试邮件则证明配置无误.接下来所有的提示邮件.回复邮件均会使用SMTP服务器发送.
头图:【オリジナル】 夜明けPID:40904882 画师:りすたる@例大祭
以下用于测试某新功能需要的图片外链.