在php里从本地经过msmtp发送邮件
参看http://www.absolutelytech.com/2010/07/18/howto-send-emailsusing-mail-function-from-localhost-in-php-through-msmtp-using-gmail-account-on-linux/ 的步骤:
Step by step instructions:
- First of all, follow this tutorial:
Install msmtp on your linux box and configure it to work with Gmail.Msmtp is highly configurable and you can easily configure it to work with any smtp server. If you wish to use any other service with msmtp, you may read its manual and configure it.
Proceed to next step only if you have successfully configured and are able to send a test message. - Open php.ini in your text editor.
sudo gedit /etc/php5/apache2/php.ini
Search for ‘sendmail_path’ and change it to look like
sendmail_path = '/usr/bin/msmtp -t'
Save the file and exit the text editor.
Please note that your msmtp path may vary if you are not using Ubuntu. You may find the path to executable by:which msmtp
- Restart apache:
sudo /etc/init.d/apache2 restart
OR
sudo /opt/lampp/lampp restart
-
Everything’s done. Lets test if the mail() function is working now:
if ( mail ( 'yourusername@gmail.com', 'Test mail from localhost', 'Working Fine.' ) ); echo 'Mail sent'; else echo 'Error. Please check error log.';
Replace the yourusername@gmail.com with your own username, save it into a php file along with php delimeters in your virtual host root folder and execute it through the browser. You should receive a mail.
跟上述步骤大同小异。
msmtp在ubuntu下apt-get install msmtp就可以安装, 安装完后, msmtp --ver 查看:
......
System configuration file name: /etc/msmtprc
User configuration file name: /root/.msmtprc
显然要保证有/etc/msmtprc文件并要设置好它的配置内容。我的/etc/msmtprc内容如下:# Set default values for all following accounts.defaultslogfile /usr/local/msmtp/msmtp.log# The SMTP server of the provider.account test# SMTP邮件服务器地址host smtp.ym.163.com# 发送的邮件Emailfrom yanghf@kopere.comauth login# 邮件服务器登录账号user yanghf@xxx.com# 邮件服务器登陆密码password 12345678# Set a default accountaccount default : test不过,我打开上面的测试php时,开始时出来Error. Please check error log.发送邮件不成功,查看apache的error_log, 找到错误信息:msmtp: /etc/msmtprc: must be owned by you原来是/etc/msmtprc的权限是777的话也不行,需要限制。 ps aux|grep httpd查看apache的进程的用户名是www,然后:chown www.www /etc/msmtprcchmod 600 /etc/msmtprc # 一定要600而不是777 !搞定!然后在mantis里配置 $g_phpMailer_method = PHPMAILER_METHOD_MAIL这样比配置 PHPMAILER_METHOD_SMTP 发邮件要快得多,都可立即收到邮件!