php中的mail()函数默认调用的是sendmail,这次我将其换成了轻量级的msmtp。在次过程中涉及到:修改配置文件php.ini,创建配置文件msmtprc或(.msmtprc)并修改其权限。
创建msmtp的配置文件/etc/msmtprc或~/.msmtprc:
1 account default 2 host smtp.qq.com 3 auth login 4 from youremail@qq.com 5 user youremail@qq.com 6 password yourpassword 7 logfile /usr/local/msmtp/msmtp.log
/etc/php5/apache2/php.ini中设置:
sendmail_path = '/usr/bin/msmtp -t -i'
另外一个php.ini文件在/etc/php2/cli中,这是command line中的php配置文件。如果希望在命令行中运行例如"php testmailing.php"类似操作,可以对其做同样修改。至此,命令行中的mail()函数调用成功。
之后将msmtprc的权限提至644:
sudo chmod 644 /etc/msmtprc
至此,browser中的mail()函数调用成功。
原本只是想试一下php的mail()函数,想不到配置了两天,原因又是权限不够。目前还是对linux不够熟悉,文件的权限真是个大问题。这次虽然解决了问题,不过msmtprc的权限为644,其中还包含了明文密码。安全起见,可以把配置文件存入数据库在进行加密处理,当然这又是后话了。