我想通过在虚拟机的centos linux开发环境中安装MailHog来简化开发。php mail()
函数没有报告任何问题(也就是说,它返回TRUE),但是寄出的邮件没有出现在MailHog中。我应该如何正确地设置它?
遵循这些步骤:
- 从https://github.com/mailhog/MailHog/releases下载相应的MailHog版本。我在这个例子中使用
MailHog_linux_amd64
,但您可能需要一个不同的版本。我假设您使用主目录来存储文件。如果您不这样做,请相应地进行必要的修改。 -
如果您的VM使用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是主机看到虚拟机的域名。现在您应该看到一些行,详细说明了它使用的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界面
-
测试从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"""