【问题标题】:RASPBERRY PI WEBSERVER PHP MAIL PROBLEMSRASPBERRY PI WEBSERVER PHP 邮件问题
【发布时间】:2021-12-29 21:10:57
【问题描述】:

欢迎来到我的第一个 stackoverflow 问题:/

今天我在 Strato.de 上为自己购买了我的第一个域名。 我在我的 raspberrypi 上创建了一个网络服务器来托管我的网站,将我的域添加到其中 - 这样我就可以通过我的域连接到我的网络服务器。

我的网站有一个联系表格,其中包含数据和消息并将邮件发送到我的电子邮件。
我在树莓上安装了 php,但我不知道为什么表单不起作用。 电子邮件永远不会到达。

我的 HTML 文件:

<form action="./mail_handler.php" method="POST">
                        <div class="p pb-3"><strong>Feel free to contact me </strong></div>
                        <div class="row mb-3">
                          <div class="col">
                            <div class="input-group"><span class="input-group-addon"><i
                                  class="fa fa-user-circle"></i></span>
                              <input class="form-control" type="text" name="first_name" id="first_name"
                                placeholder="Firstname" required="required" />
                            </div>
                          </div>
                        </div>
                        <div class="row mb-3">
                          <div class="col">
                            <div class="input-group"><span class="input-group-addon"><i
                                  class="fa fa-user-circle"></i></span>
                              <input class="form-control" type="text" name="last_name" id="last_name"
                                placeholder="Lastname" required="required" />
                            </div>
                          </div>
                        </div>
                        <div class="row mb-3">
                          <div class="col">
                            <div class="input-group"><span class="input-group-addon"><i
                                  class="fa fa-envelope"></i></span>
                              <input class="form-control" type="email" name="email" id="email" placeholder="E-mail"
                                required="required" />
                            </div>
                          </div>
                        </div>
                        <div class="row mb-3">
                          <div class="col">
                            <div class="form-group">
                              <textarea class="form-control" name="message" placeholder="Your Message"
                                required="required"></textarea>
                            </div>
                          </div>
                        </div>
                        <div class="row">
                          <div class="col">
                            <button class="btn btn-primary" type="submit" name="submit" value="Send">Send</button>
                          </div>
                        </div>
                      </form>

我的 PHP 文件

<?php if(isset($_POST['submit'])){
$to = "contact@mymail.de"; // Empfägner Adresse
$from = $_POST['email']; // Absender Adresse
$first_name = $_POST['first_name'];
$last_name = $_POST['last_name'];
// $phone = $_POST['phone'];
$subject = "PORTFOLIO";

$message = $first_name . " " . $last_name . "\n" . $from .  " schrieb folgendes:" . "\n\n" . $_POST['message'];

$headers = "From:" . $from;
$headers2 = "From:" . $to;
mail($to,$subject,$message,$headers);
header('Location: ./contact_success.html');
}?>

phpinfo()

我尝试了这么多,我不知道我能做什么,也许有人可以帮助我。 如果您需要更多信息,请联系我

【问题讨论】:

    标签: php raspberry-pi webserver phpinfo


    【解决方案1】:

    停止!!!您实现的代码存在严重的安全漏洞。你已经实现了一个开放的中继。您在电子邮件标题中使用用户输入,而无需进行任何类型的完整性检查、验证或转义。在电子邮件中使用之前,必须检查所有用户输入。

    例如,如果有人在提交的发件人电子邮件地址中包含一个新行,他们可以添加额外的任意标题。

    me@example.com
    CC: spamrecepient@example.com
    

    如果您有此联系表格可供全世界使用,垃圾邮件发送者很快就会发现它并将其用作开放中继。

    至于为什么它不起作用,有几种可能性。显而易见的是,您为$to 电子邮件地址使用了“发件人”标头,但在发送电子邮件时从不使用该$header2

    另一种可能是mail() 函数未配置为正确发送电子邮件。在基于 Linux 的操作系统上,PHP mail() 调用 Linux 系统以发送名为 sendmail 的邮件。听起来您还没有配置和测试该系统。这是一个指南:Enable Outgoing Mail on Raspberry Pi | Unix etc.

    建议您使用现有的联系表格,而不是自己编写联系表格。我写了一个你可以使用的free, open source contact form。您仍然需要配置 sendmail,但它会正确验证所有用户输入并且易于配置。

    【讨论】:

    • 感谢您提供有关安全问题的信息。我现在没有时间构建它们,但我有一些问题: 1. 奇怪的是 - 当我在 Strato.de 的网络空间上托管网站时,一切正常。而且也没有使用 $header2 。 2.我把邮件功能改成sendmail,然后网站就没有反应了。
    • 大多数托管公司都会为您设置 sendmail。您的脚本调用 PHP 邮件函数应该没问题,因为它的文档说它在后台调用 sendmail。
    • 但是我将它托管在连接到我的路由器的树莓派上 - 所以从我家
    • 是的,所以在您的树莓派上,您仍然需要配置 sendmail,但您仍然可以使用 PHP 邮件功能。
    • 但是如果我可以使用 php mail 为什么它不起作用:(
    猜你喜欢
    • 2018-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多