首页 > 解决方案 > 无法理解为什么我没有使用 PHP mail() 函数将邮件发送到我的主机邮件

问题描述

我要做的只是向我的主机邮件发送一封非常基本的电子邮件。我目前使用的托管服务是https://www.ionos.com/并且我有一个注册电子邮件。我的网站已经托管并运行。我试图执行的代码是这样的:

索引.php

    <form class="" action="/contactform.php" method="post">
        <input type="text" name="name" value="">
        <input type="text" name="mail" value="">
        <textarea name="message"></textarea>
        <button type="submit" name="submit">Submit</button>
    </form>

联系表格.php

if (isset($_POST['submit'])) {
    $name = $_POST['name'];
    $mail = $_POST['mail'];
    $message = $_POST['message'];

    $mailTo = 'info@installnewcooker.com';
    $headers = 'From '.$mail;
    $text = "You've received an e-mail from ".$name."\n\n".$message;

    mail($mailTo, $name, $text, $headers);
    header("Location: ../index.php");
}

如代码所示,我尝试发送消息的电子邮件是 info@installnewcooker.com。可悲的是,我没有收到任何东西,我也不知道为什么。PHP 代码没有给出任何错误。

标签: phpemail

解决方案


很可能,您需要一个具有身份验证的注册帐户。但该mail()功能不允许这样的身份验证。

您可能想要安装一个合适的类,例如 PHPMailer。只需向实例提供您的邮件服务的身份验证信息,您就可以了。

如果还是不行,可以使用PHPMailer的debug模式来排查。如果您发现自己处于这种情况,很可能您的 Web 提供商不允许通过 PHP 进程发送电子邮件,这可能是为了避免滥用和垃圾邮件。在这种情况下,您需要与提供商交谈并启用该功能,以便该mail()功能能够正常工作,并且可能需要添加一个自定义标头以向您的 Web 提供商标识电子邮件发件人,以用于会计/监控目的。作为替代方案,他们可能会为您提供适合与 PHPMailer 一起使用的用户/密码对。


推荐阅读