我需要测试一个使用PHP的mail()的函数 如何在不将脚本上传到服务器并在线测试的情况下执行此操作? 在没有互联网连接的情况下,我正在开发什么 我在Mac OSX上从XAMPP运行localhost。
答案 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)
一个简单易用的测试解决方案:
<击> http://blogs.bigfish.tv/adam/2009/12/03/setup-a-testing-mail-server-using-php-on-mac-os-x/ 击> 更新链接: https://github.com/ifunk/smtp-catcher
答案 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),它可以正常工作。它看起来像一个电子邮件客户端,并在单独的部分中显示了消息的所有部分/细节。