好吧,最近,我创建了一个脚本并将其放在我有权访问的域上。一旦我尝试发送电子邮件,电子邮件就完成了,没问题,但有一件事我觉得很奇怪。
我的主题字段未设置。我的主题行完全空白,就像我从未发过一样。它似乎也不像我的标题是通过任何一个发送。 (见:Image)
另外,有没有理由将这些内容与电子邮件一起发送到电子邮件中?喜欢,它可能是php.ini中的一个设置吗?
Message-Id:message-id-here @ **。gs
日期:2013年1月2日星期三05:37:47 +0400(MSK)
来自:www-data@**.gs(www-data)
Return-Path:www-data @ **。gs
X-OriginalArrival时间:2013年1月2日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>
答案 0 :(得分:4)
您的主题未设置,因为您有拼写错误。变化:
$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";