我将尝试描述我的问题:
在本地环境中调试传出电子邮件我安装了mailcatcher(http://mailcatcher.me/),但是在捕获从web发送的邮件时遇到了一些问题。如果我运行只包含一个mail()调用的脚本,一切都很好,我可以在mailcatcher 127.0.0.1:1080中看到发送的电子邮件。但是当我尝试从Web浏览器访问相同的脚本时,mail()函数返回false,浏览器中没有显示任何错误,错误日志中没有任何内容。在邮件日志中,即使我可以看到mail()函数的调用。
我不确定,可能是我的nginx / php-fpm配置错误,或权限有问题。
selinux被禁用。
如果您知道解决方案,请提供帮助。
提前致谢
答案 0 :(得分:5)
我在ubuntu 14.04上面临同样的问题。
/etc/php5/cli/php.ini
和/etc/php5/fpm/php.ini
具有相同的sendmail_path
配置,但只有php-cli
可以发送电子邮件。
对于我的环境,Mailcatcher
适用于远程服务器,我使用catchmail
命令与其联系。
以下是我使用的sendmail_path
:
sendmail_path = /usr/bin/env catchmail --smtp-ip mailcatcher-ip -f address@example.com
对于fpm
php.ini
文件,我必须指定catchmail
的完整路径才能使邮件功能正常工作:
sendmail_path = /usr/bin/env /usr/local/bin/catchmail --smtp-ip mailcatcher -f address@example.com
答案 1 :(得分:2)
使用php-fpm,它可以使用提供的RVM(?)包装脚本。
sendmail_path = /usr/local/rvm/wrappers/default/catchmail
答案 2 :(得分:1)
如果您使用Mac OS Sierra或更高版本:
这是int main()
{
const int Length = 10;
const int Height=5;
std::string gap;
for (int i = 0; i < Height; i++)
{
for (int j = i; j < Length-i; j++)
{
cout << "*";
}
cout << endl;
gap=gap+' ';
cout<<gap;
}
}
的正确位置:
更改catchmail
通过sendmail_path = /usr/bin/env catchmail -f catcher@mailcatcher.me
。
答案 3 :(得分:0)
在使用PHP-FPM和PHP 5.6的CentOS 7上,我发现我必须修改/etc/php-fpm.d/www.conf
而不是将ini文件添加到/etc/php.d
或修改/etc/php.ini
。这也需要完整的路径,如@Alexis N-o的答案。
php_admin_value[sendmail_path] = '/usr/bin/env GEM_PATH=/usr/share/gems:/usr/local/share/gems:/usr/share/rubygems:$HOME/.gem/ruby /usr/local/bin/catchmail --smtp-ip 127.0.0.1 --smtp-port 1025 -f mailcatcher@example.com'
更新:最近我发现在某些环境下将php-fpm作为apache运行时,GEM_PATH为nil。无论我尝试了什么(/ etc / gemrc),除了注入GEM_PATH
作为此命令的一部分之外,我无法做到。