在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:

 

  1. 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.

  2. 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
  3. Restart apache:

     

    sudo /etc/init.d/apache2 restart

    OR

    sudo /opt/lampp/lampp restart
  4. Everything’s done. Lets test if the mail() function is working now:
    if ( mail ( '[email protected]', 'Test mail from localhost', 'Working Fine.' ) );
    echo 'Mail sent';
    else
    echo 'Error. Please check error log.';

    Replace the [email protected] 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.
    defaults

    logfile /usr/local/msmtp/msmtp.log
    # The SMTP server of the provider.
    account test

    # SMTP邮件服务器地址
    host smtp.ym.163.com

    # 发送的邮件Email
    auth login

    # 邮件服务器登录账号
    # 邮件服务器登陆密码
    password 12345678
    # Set a default account
    account 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/msmtprc
    chmod 600 /etc/msmtprc # 一定要600而不是777 !
    搞定!
    然后在mantis里配置 $g_phpMailer_method             = PHPMAILER_METHOD_MAIL
    这样比配置 PHPMAILER_METHOD_SMTP 发邮件要快得多,都可立即收到邮件!

     

 

你可能感兴趣的:(PHP,Ubuntu,Gmail,Linux,Apache)