1

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

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

谢谢!

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

4

4 回答 4

9

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

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

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

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

哦 - 它是免费的!

于 2012-05-28T08:30:58.553 回答
7

这是我找到解决此问题的解决方案。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.ini中的sendmail_path参数编辑为:

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

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

于 2012-05-28T08:21:40.507 回答
2

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

于 2012-05-23T08:13:22.223 回答
2

您可以包装mail()函数,例如:

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

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

于 2012-05-23T08:16:36.177 回答