【问题标题】:PHP mail() strange additional information automatically sendingPHP mail() 奇怪的附加信息自动发送
【发布时间】:2013-01-02 01:59:14
【问题描述】:

嗯,最近,我创建了一个脚本并将其放在我可以访问的域中。一旦我尝试发送电子邮件,电子邮件就通过了,没问题,但是我发现了一件奇怪的事情。

我的主题字段未设置。我的主题行完全空白,好像我从未发送过一样。似乎我的标头也没有通过任何一个发送。 (见:Image

另外,这些东西与我的信息一起在电子邮件中发送是有原因的吗?比如,它可能是 php.ini 中的设置吗?

消息 ID:message-id-here@**.gs

日期:2013 年 1 月 2 日,星期三 05:37:47 +0400 (MSK)

来自:www-data@**.gs (www-data)

返回路径:www-data@**.gs

X-OriginalArrivalTime: 02 Jan 2013 01:37:47.0814 (UTC) FILETIME=[C5131C60:01CDE889]

我正在发送一封电子邮件,这是邮件。

这是正确的吗?

目前,这就是我的脚本的样子。

<html>
<head>
    <title>Email</title>
</head>

<body>
    <?php
        ini_set("mail.add_x_header", "Off");
        if(isset($_POST['send']))
        {
            $To = ((isset($_POST['to'])) ? $_POST['to'] : '');
            $Subject = ((isset($_PST['subject'])) ? $_POST['subject'] : '');
            $Message = ((isset($_POST['message'])) ? $_POST['message'] : '');
            $Headers = ((isset($_POST['from'])) ? "From: " . $_POST['from'] . "\r\n" : '');
            $Headers = ((isset($_POST['reply-to'])) ? "Reply-to: " . $_POST['reply-to'] . "\r\nReturn-Path:" . $_POST['reply-to'] . "\r\n" : '');
            if(mail($To, $Subject, $Message, $Headers))
            {
                echo 'Sent to ' . $To . '.';
            }
        }
    ?>

    <form method="POST">
        To: <input type="text" name="to" value="" /><br />
        Subject: <input type="text" name="subject" value="" /><br />
        Message: <textarea name="message" style="width:300px; height:200px;"></textarea><br />
        From: <input type="text" name="from" value="" /><br />
        Reply-To: <input type="text" name="reply-to" value="" /><br />
        <input type="submit" name="send" />
    </form>
</body>

【问题讨论】:

    标签: php email


    【解决方案1】:

    您的主题未设置,因为您有错字。变化:

    $Subject = ((isset($_PST['subject'])) ? $_POST['subject'] : '');
    

    到:

    $Subject = ((isset($_POST['subject'])) ? $_POST['subject'] : '');
    

    至于标题,您的 Return-To 会覆盖 From 标题。您还应该将 \r\n 更改为 \n,因为某些电子邮件客户端将 \r\n 解释为“所有标题的结尾”。

    所以,而不是:

    $Headers = ((isset($_POST['from'])) ? "From: " . $_POST['from'] . "\r\n" : '');
    $Headers = ((isset($_POST['reply-to'])) ? "Reply-to: " . $_POST['reply-to'] . "\r\nReturn-Path:" . $_POST['reply-to'] . "\r\n" : '');
    

    做:

    $Headers = array();
    if (isset($_POST['from']))
    {
        $Headers[] = "From: " . $_POST['from'];
    }
    if (isset($_POST['reply-to']))
    {
        $Headers[] = "Reply-to: " . $_POST['reply-to'];
        $Headers[] = "Return-Path: " . $_POST['reply-to'];
    }
    $Headers = implode("\n", $Headers) . "\r\n";
    

    【讨论】:

    • 当您提到“发件人”标题时,我自动知道问题所在。我没有附加 $Headers 变量。再次感谢!希望有人可以帮助我了解消息中传递的信息。没有找到任何可以让我解决它的方法。
    • 我改变了答案。新代码应该可以解决您的所有问题,所以请尝试一下。
    • 没问题。如果还有其他问题,请告诉我
    猜你喜欢
    • 1970-01-01
    • 2017-08-08
    • 2013-04-13
    相关资源
    最近更新 更多