如何显示或保存电子邮件,而不是在本地主机上实际发送


How to display or save emails instead of actual sending them on localhost?

我正在做一个php项目,所有电子邮件都通过mail((函数发送。准备和测试这些电子邮件是一个很大的问题,因为 mail(( 函数在本地主机上失败,我应该不断重写我的代码以在发送之前打印出电子邮件,检查它并在服务器上发送正常。

有没有办法以某种方式管理这种情况?如果有一种方法可以将消息保存在硬盘上或仅将它们发送到一个特定的电子邮件地址,而不是真正的收件人,而无需或略微修改代码,我将非常高兴。非常感谢一些有用的软件或建议。

谢谢!

附言在本地主机上,我使用 WAMP 包作为网络服务器。

http://www.toolheap.com/test-mail-server-tool/

适用于Windows的测试邮件服务器工具很棒!每次您在本地主机上发送电子邮件时,它都会在您最喜欢的电子邮件阅读器(即 outlook、邮箱等(中弹出该电子邮件

我专门使用它来测试我在 WAMP 上的所有网络应用程序!

无需更改服务器 - 只需下载并安装 - 然后发送电子邮件并查看其运行情况。

哦 - 它是免费的!

这是我找到的解决此问题的解决方案。1. 在 wamp 目录中的某个位置创建 sendmail.php 文件,例如 d:''wamp''apps''sendmail.php。这是它的来源:

/* Path where emails will be stored */
define('DST', 'd:/wamp/tmp/sendmail/');
/* Extract the message from the stdin */
$message = '';
while(($line = fgets(STDIN)) !== false) {
    $message .= $line;
}
/* Save message to file */
file_put_contents(DST.date('Y-m-d_H-i-s_').md5($message).'.eml', $message);

2. 取消注释并编辑 php 中的 sendmail_path 参数.ini 到:

sendmail_path = "D:'wamp'bin'php'php5.3.5'php.exe D:'wamp'apps'sendmail.php"

通过 mail(( 函数发送的所有消息都将被捕获并存储在指定的目录中。

安装假电子邮件。它充当本地SMTP服务器,并将所有邮件保存在一个文件夹中。

你可以

包装mail()函数,如下所示:

function my_send_mail(/*...*/) {
   if (is_localhost()) {
      // just save the mail to text.
   } else {
      // call mail() and send mail
   }
}

并且使用此函数而不是直接使用 mail((。