拦截从Xampp Mercury Mail Server发送的所有电子邮件

时间:2015-01-01 02:40:12

标签: email xampp mail-server

我有一个Xampp服务器,我只在开发环境中使用。为了预览将从实际网站发送的电子邮件而不实际发送它们,我想拦截从该服务器发送的所有电子邮件。我希望能够将它们全部发送到特定的电子邮件或将它们保存为文件,而不是将它们发送到它们设置的任何地址。通过这种方式,我可以确保它们是正确的,而不会在测试过程中意外发送电子邮件。


我找到了一个类似的答案问题 here 但是无法找到在答案中打开任何对话框的方法,所以它没有让我走得很远。


在此先感谢您的帮助!

1 个答案:

答案 0 :(得分:4)

您可以使用php.ini中的sendmail配置来完成此任务。

创建名为smtp_catcher.php的文件,并设置sendmail_path

sendmail_path = "php C:\path\to\file\smtp_catcher.php"

然后在smtp_catcher.php添加此块:

#!/Applications/XAMPP/xamppfiles/bin
<?php

# create a filename for the emlx file
list($ms, $time) = explode(' ', microtime());
$filename = dirname(__FILE__).'/'.date('Y-m-d h.i.s,', $time).substr($ms,2,3).'.emlx';

# write the email contents to the file
$email_contents = fopen('php://stdin', 'r');
$fstat = fstat($email_contents);
file_put_contents($filename, $fstat['size']."\n");
file_put_contents($filename, $email_contents, FILE_APPEND);

# open up the emlx file (using Apple Mail)
exec('open '.escapeshellarg($filename));

?>

现在我不确定您需要使用什么扩展程序来查看电子邮件,但这应该可以捕获所有发送的电子邮件。

注意:确保php位于您窗口的环境中