作者:lucifer | 来源:互联网 | 2014-05-28 08:57
前几天作项目遇到这样的一个问题,当某一个结点下有新的文章发表的时候,就要通过邮件的形式通知该结点下的所有用户。这就需要用到邮件发送的功能。因为项目是php语言做的,所以最简单的方法就是使用php自带的函数mail。如果是java语言的项目,那么邮件发
前几天作项目遇到这样的一个问题,当某一个结点下有新的文章发表的时候,就要通过邮件的形式通知该结点下的所有用户。
这就需要用到邮件发送的功能。
因为项目是php语言做的,所以最简单的方法就是使用php自带的函数mail。如果是java语言的项目,那么邮件发送函数要自己写一个类。php自带有Mail这样的一个类,使用mail函数其实很简单,手册中都有详细的说明,可是具体,详细,复杂的使用的时候难免就要遇到很多问题了。
首先就是在编译php的时候,要有一个编译选项--enable-mail,否则mail函数无法使用。
第二个遇到的问题就是:编写mail脚本的时候,将此脚本通过命令行运行,或者shell运行都是没有问题的。可是部署到项目中,如果想通过浏览器访问此脚本,那么mail函数总是返回false。解决此问题的办法是修改php的配置文件php.ini,找到
sendmail_path = /bin/sendmail -t
这样的一行,如果以前没有修改过,那么这一行可能是被注释掉了,把后面的路径改为自己机器的sendmail执行文件的路径,最重要的一点就是后面的参数-t,看到有些文档,或者博客说后面可以不用参数,我怀疑不用也是可以的,但是用了也是可以的,我的项目在发送邮件之前设置了邮件的很多格式,所以有些参数也就不用添加了,但是没有传参数的mail函数在被调用的时候,配置文件中的参数就显现了他的作用。
最重要的就是说明这儿在配置文件中是sendmail可以设置参数的。
使用linux,具体说使用sendmail传参数的方式有很多,要配合的当,配合不当简单的问题是覆盖问题,复杂的就是发送失败之类的问题。
像这样的问题用脚本可以执行,但是通过浏览器不能执行的问题还是首次遇到,自己总结的一点经验希望对遇到同样类型问题的朋友有用。