3

与 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]

我在 localhost 主页中看不到“邮件”链接,用于测试默认邮件表单,因为它有很多像这样的崩溃:

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”?如果是,我需要在我的情况下做什么?

4

2 回答 2

9

它不存在,但这是我的 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 文件夹中)。

确保mailtodisk任何人都可以运行您的脚本(chmod 755 mailtodisk),并且任何人mailoutput都可以写入您的文件夹(chmod 777 mailoutput)。

那么你的 php.ini 文件 ( /opt/lampp/etc/php.ini) 应该有:

sendmail_path=/opt/lampp/mailtodisk/mailtodisk

每次编辑 php.ini 文件时,都必须重新启动 Apache。

如果您不想发送电子邮件,则安装 sendmail 是多余的。

于 2014-04-13T20:52:08.450 回答
2

Windows XAMPP 用户:

扩展 Lee Kowalkowski 的绝妙解决方案:

1.新建文件mailtodisk.php

我在其中创建了文件C:\xampp\mailtodisk- 请记住第 3 步

2.将 Lee Kowalkowski 的脚本(路径的小修改已经完成)粘贴到文件中:

<?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,所以我可以直接查看电子邮件。

于 2020-06-05T13:37:28.647 回答