从localhost测试PHP的邮件功能

时间:2010-07-04 17:06:35

标签: php email testing localhost

我需要测试一个使用PHP的mail()的函数 如何在不将脚本上传到服务器并在线测试的情况下执行此操作? 在没有互联网连接的情况下,我正在开发什么 我在Mac OSX上从XAMPP运行localhost。

7 个答案:

答案 0 :(得分:52)

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

以下是一个如何运作的示例:

daniel@daniel-laptop:~$ cat | php -d sendmail_path='tee mail.out > /dev/null'
<?php
mail('test@example.com', 'the subject', 'the body');
?>
daniel@daniel-laptop:~$ cat mail.out
To: test@example.com
Subject: the subject
X-PHP-Originating-Script: 1000:-


the body

您可以在sendmail_path文件中设置php.ini。如果您希望每次都将电子邮件附加到文件而不是覆盖,则可以使用tee -a而不是tee

答案 1 :(得分:7)

要测试从apache发送电子邮件,请执行以下操作

创建一个用于存储电子邮件的文件夹。

/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

答案 2 :(得分:5)

答案 3 :(得分:1)

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

答案 4 :(得分:0)

在本地计算机中设置pop3服务器。许多免费提供。 并使用sendmail在本地域内发送邮件。

默认情况下,不需要在Linux中设置sendmail路径。至少我从来不需要它。 只需使用mail()函数并在本地域点击邮件

答案 5 :(得分:0)

在提供的@ Daniel-Egeberg答案的基础上,这对我在Ubuntu 18.04上有效:

我打开了/etc/php/7.2/apache2/php.ini并设置:

sendmail_path ='tee /path/to/file/mail.out'

重新启动:

sudo服务apache2重新启动

然后创建/path/to/file/mail.out并更改其权限:

chmod 666 /path/to/file/mail.out

答案 6 :(得分:0)

如果您使用的是Windows / WAMP / UWAMP / XAMPP之类的软件,并且需要测试邮件,那么Papercut非常值得一看:

https://github.com/ChangemakerStudios/Papercut

您可以将SMTP设置保留在php.ini中作为默认设置(localhost / 25),它可以正常工作。它看起来像一个电子邮件客户端,并在单独的部分中显示了消息的所有部分/细节。