在 XAMPP for Linux 中使用 mailtodisk / mailoutput
Posted
技术标签:
【中文标题】在 XAMPP for Linux 中使用 mailtodisk / mailoutput【英文标题】:Use of mailtodisk / mailoutput in XAMPP for Linux 【发布时间】:2013-10-23 22:49:40 【问题描述】:与 Windows 不同,我无法在 Linux 中使用“mailtodisk”php 选项。好像根本不存在。
在“php.ini”的邮件部分,没有对它的引用:
[mail function]
; For Win32 only.
; http://php.net/smtp
SMTP=localhost
; http://php.net/smtp-port
smtp_port=25
; For Win32 only.
; http://php.net/sendmail-from
;sendmail_from = me@example.com
; For Unix only. You may supply arguments as well (default: "sendmail -t -i").
; http://php.net/sendmail-path
;sendmail_path =
; Force the addition of the specified parameters to be passed as extra parameters
; to the sendmail binary. These parameters will always replace the value of
; the 5th parameter to mail(), even in safe mode.
;mail.force_extra_parameters =
; Add X-PHP-Originating-Script: that will include uid of the script followed by the filename
mail.add_x_header=On
; Log all mail() calls including the full path of the script, line #, to address and headers
mail.log ="/opt/lampp/logs/php_mail_log"
[SQL]
我在本地主机主页中看不到“邮件”链接,用于测试默认邮件表单,因为它有很多像这样的崩溃:
Notice: Undefined variable: TEXT in /opt/lampp/htdocs/xampp/start.php on line 12
Obs:尽管 localhost 主页中出现此错误,但我正在运行项目没有问题。
实际上,它的菜单中似乎没有“邮件”链接(我已经搜索了源代码)。
我不知道此信息是否有任何帮助,但文件“sendmail.php”使用了我系统中不存在的文件:/usr/sbin/sendmail
。
XAMPP 的当前版本是:1.8.3,最近更新了。
是否可以在 XAMPP for Linux 中使用“mailtodisk”?如果是,我需要在我的情况下做什么?
【问题讨论】:
我会说linux带来了将邮件传递到本地硬盘驱动器所需的所有工具,但这需要知道如何配置邮件服务器。除非“mailtodisk”也作为 linux 的可执行文件提供,否则此功能似乎仅适用于 Windows。 XAMPP 的人应该知道更多 - 你有没有在那里寻求支持? 【参考方案1】:它不存在,但这是我的 mailtodisk 脚本:
/opt/lampp/mailtodisk/mailtodisk:
#!/opt/lampp/bin/php
<?php
$input = file_get_contents('php://stdin');
$filename = '/opt/lampp/mailoutput/mail-' . gmdate('Ymd-Hi-s') . '.txt';
$retry = 0;
while(is_file($filename))
$filename = '/opt/lampp/mailoutput/mail-' . gmdate('Ymd-Hi-s') . '-' . ++$retry . '.txt';
file_put_contents($filename, $input);
您的 XAMPP 安装可能不在文件夹 /opt/lampp
中,如果不在,您需要编辑脚本(尽管它不必位于 XAMPP 文件夹中)。
确保任何人 (chmod 755 mailtodisk
) 都可以运行您的 mailtodisk
脚本,并且任何人 (chmod 777 mailoutput
) 都可以写入您的 mailoutput
文件夹。
那么你的 php.ini 文件 (/opt/lampp/etc/php.ini
) 应该有:
sendmail_path=/opt/lampp/mailtodisk/mailtodisk
每次编辑 php.ini 文件时,都必须重新启动 Apache。
如果您不想发送电子邮件,安装 sendmail 是多余的。
【讨论】:
这是天才。我在下面发布了一个 Windows 等效指南,该指南基于您的脚本(贷记)。希望没关系。【参考方案2】:Windows XAMPP 用户:
扩展 Lee Kowalkowski 的绝妙解决方案:
1.创建新文件mailtodisk.php
我在C:\xampp\mailtodisk
中创建了文件 - 请记住第 3 步的内容
2。将Lee Kowalkowski's script(路径的小修改已经完成)粘贴到文件中:
<?php
$input = file_get_contents('php://stdin');
$filename = '/xampp/mailoutput/mail-' . gmdate('Ymd-Hi-s') . '.txt';
$retry = 0;
while(is_file($filename))
$filename = '/xampp/mailoutput/mail-' . gmdate('Ymd-Hi-s') . '-' . ++$retry . '.txt';
file_put_contents($filename, $input);
?>
根据需要更改 $filename
。对我来说,它在同一个驱动器中,所以 /xampp
工作正常。
3.打开 php.ini(通常在 C:\xampp\php 中)并查找 sendmail_path,注释现有的并粘贴以下内容:
sendmail_path="C:\xampp\php\php.exe C:\xampp\mailtodisk\mailtodisk.php"
确保 php.exe 路径正确,以及步骤 1 中的 mailtodisk.php 路径。
重启 Apache 就完成了。
注意,我使用的是 Thunderbird,所以不是 .txt
(在第 2 步中)我个人使用的是 .eml
,所以我可以直接查看电子邮件。
【讨论】:
我真的很喜欢这个答案,但是有一种任意方法可以确定php.exe
的位置,因此代码可以在不同的 PC 上运行(例如,相对解决方案与绝对解决方案)。我有一个想法如何解决我的问题***.com/questions/70120578/…,但它需要是相对的而不是绝对的。以上是关于在 XAMPP for Linux 中使用 mailtodisk / mailoutput的主要内容,如果未能解决你的问题,请参考以下文章
新安装的 XAMPP for Linux 上的“符号链接不允许或链接目标不可访问”
如何使用 XAMPP for Windows 访问 MySQL 命令行?