拦截从 Xampp Mercury 邮件服务器发送的所有电子邮件
Intercept all emails sent from Xampp Mercury Mail Server
我有一个仅在开发环境中使用的 Xampp 服务器。为了预览从实时站点发送的电子邮件而不实际发送它们,我想拦截从该服务器发送的所有电子邮件。我希望能够将它们全部发送到特定的电子邮件或将它们保存为文件,而不是将它们发送到他们设置的任何地址。这样我就可以确保它们是正确的,而不会在测试期间意外发送电子邮件。
我找到了一个类似的问题和答案
here
但无法找到一种方法来打开答案中的任何对话框,所以它并没有让我走得太远。
在此先感谢您的帮助!
您可以使用 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 在您的 window 环境路径
中
您可以使用 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 在您的 window 环境路径
中