我希望通过在我的虚拟框中的centos linux开发环境中安装MailHog来简化开发。 php mail()
函数不会报告任何问题(也就是说,它返回TRUE),但是传出的邮件没有出现在MailHog中。我该如何正确设置?
答案 0 :(得分:3)
请按以下步骤操作:
MailHog_linux_amd64
,但您可能需要不同的版本。我假设您使用您的主目录来存储您的文件。在您可能不这样做的情况下,请相应地进行必要的修改。如果您的虚拟机使用ip过滤,那么您应该允许通过端口8025进行通信,并在iptable配置中添加一行并重新启动它:
vim /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8025 -j ACCEPT
service iptables restart
使用以下命令启动MailHog:
./MailHog_linux_amd64 -hostname=mylocal.vbox:8025
其中mylocal.vbox是主机查看VM的域名。现在您应该看到一些详细说明它使用的IP地址和端口的行。
从此处下载mhsendmail
:https://github.com/mailhog/mhsendmail/releases。
将其更改为可执行文件(相应地调整文件路径):
chmod 777 /home/you/mhsendmail_linux_amd641
将php.ini
改为使用mhsendmail
而不是sendmail
:
vim /etc/php.ini
sendmail_path = "/home/you/mhsendmail_linux_amd64"
service httpd restart
从主机查看MailHog Web界面(使用我们上面使用的主机名):http://mylocal.vbox:8025/。应该出现MailHog的webmail界面。
使用此oneliner测试从VM命令行发送的邮件:
php -r "\$from = \$to = 'your.emailaddress@gmail.com'; \$x = mail(\$to, 'subject'.time(), 'Hello World', 'From: '. \$from); var_dump(\$x);"
它应显示true
,MailHog的Web界面应显示新电子邮件。
玩得开心,根据需要通过php的mail()函数发送尽可能多的电子邮件。
更多想法:
如果要覆盖默认的IP地址和端口设置,则应使用以下语法:
./MailHog_linux_amd64 -ui-bind-addr=192.168.56.104:8026 -api-bind-addr=192.168.56.104:8026 -hostname=mylocal.vbox:8026 -smtp-bind-addr=192.168.56.104:8025
在这种情况下,您必须以这种方式转义php.ini中的设置:
sendmail_path = "/home/you/mhsendmail_linux_amd64 --smtp-addr=""192.168.56.104:8025"""