从localhost测试PHP的邮件功能

FFi*_*ish 22 php email testing localhost

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

Dan*_*erg 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
Run Code Online (Sandbox Code Playgroud)

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

  • 希望在我花了很多时间搞清楚如何使sendmail/postfix工作之前我已经看到了这一点 (2认同)
  • `tee file.txt>/dev/null`是否比`cat >> file.txt`更好?有什么理由我不喜欢使用`tee`? (2认同)

Xav*_*ohn 8

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

创建一个文件夹来存储电子邮件.

/home/username/Documents/TestEmails
Run Code Online (Sandbox Code Playgroud)

授予apache权限.从Documents文件夹中运行

sudo chgrp -R www-data TestEmails
Run Code Online (Sandbox Code Playgroud)

修改php.ini文件,我的位于

/etc/php5/apache2/php.ini
Run Code Online (Sandbox Code Playgroud)

设置sendmail_path

sendmail_path ='cat > /home/username/Documents/TestEmails/mail.txt'
Run Code Online (Sandbox Code Playgroud)

重启apace2

sudo service apache2 restart
Run Code Online (Sandbox Code Playgroud)


Nee*_*asu 0

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

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