2010-07-04 59 views
20

我需要测试一个使用PHP邮件的函数
如何在不上载脚本到服务器并在线测试的情况下做到这一点?
更重要的是,我正在开发没有互联网连接。
我在Mac OSX上从XAMPP运行localhost。从localhost测试PHP的邮件功能

+0

能”你只需从本地主机运行你的脚本? – 2010-07-04 17:09:51

回答

0

在本地机器上安装pop3服务器。许多免费提供。 并使用sendmail在本地域内发送邮件。

默认情况下,它不需要在Linux中设置sendmail路径。至少我从不需要它。 只是使用邮件()功能,并打本地域上的邮件

+0

这将是一个SMTP服务器好友pop3是实际接收电子邮件不发送邮件。 – Prix 2010-07-04 17:23:16

+0

LOL雅但sendmail发送邮件的地方??????????? 他没有互联网连接。 好的?????? 这就是为什么需要POP3服务器运行本地测试。 >>我们不是在谈论SMTP服务器。它的sendmail – 2010-07-04 17:25:26

+0

可以像访问邮件服务器一样访问机器,因此无需通过pop3连接即可验证邮件。 – Prix 2010-07-04 17:27:08

1

嗯。我还没有尝试过,但在php.ini中,你可以设置“sendmail_path”...所以理论上你可以编写自己的shell脚本,只需将输入写入文本文件,并改变你的php.ini使用它?然后只需运行测试并检查文本文件!

50

您不必在计算机上安装MTA以测试PHP的mail()函数。在基于Unix的系统(Linux,* BSD,OS X等)上,您可以将sendmail_path设置为tee mail.out > /dev/null。这会将电子邮件(包括标题)放在一个名为mail.out的文件中。

这里是它如何工作的例子:

[email protected]:~$ cat | php -d sendmail_path='tee mail.out > /dev/null' 
<?php 
mail('[email protected]', 'the subject', 'the body'); 
?> 
[email protected]:~$ cat mail.out 
To: [email protected] 
Subject: the subject 
X-PHP-Originating-Script: 1000:- 


the body 

您可以设置sendmail_pathphp.ini文件。如果要将电子邮件附加到文件而不是每次都覆盖,则可以使用tee -a而不是仅使用tee

+4

不应该得到'回答'吗? – RCNeil 2012-04-09 18:06:51

+2

希望在我花费了多年的时间之后,我发现了如何让sendmail/postfix工作 – aland 2012-11-30 23:44:46

+1

我可以用电子邮件客户端来阅读这个文件吗?在我的情况下,我使用'tee -a' – Cesar 2013-02-04 21:55:43

5
+0

只是在我的开发机器上设置。非常有用 - 谢谢! – 2012-08-22 10:47:24

+0

这个的任何非mac版本? – AlxVallejo 2012-09-05 21:43:11

+0

页面末尾有一个小窗口部分。在其他Unix系统上,我认为你可以像Mac一样解决它。 – biziclop 2012-09-06 06:13:47

6

要测试从阿帕奇发送电子邮件请执行下列操作

创建来存储邮件的文件夹。

/home/username/Documents/TestEmails 

给予apache许可。从Documents文件夹,运行

sudo chgrp -R www-data TestEmails 

修改php.ini文件,矿井位于

/etc/php5/apache2/php.ini 

sendmail_path设置

sendmail_path ='cat > /home/username/Documents/TestEmails/mail.txt' 

重启apace2

sudo service apache2 restart 
+0

如果我使用MAMP服务器软件在本地主机上开发,该怎么办? – Nathan 2014-01-04 09:26:15

+0

对我来说最好的答案是下面这个(http://stackoverflow.com/a/3176517/1130803),因为它使用'tee'而不是'cat',它在OSX中给出了一个'Invalid argument'错误。如果使用MAMP,我猜想同样的建议适用,只是改变你的php.ini所在的路径。 – 2015-04-26 02:33:58

+0

这适用于我,但只是从CLI脚本;但不是来自Web服务。除了重新启动apache之外,还有什么我需要做的吗? – orlybg 2015-08-31 17:20:54