我的网页上的联系表单最终会发送电子邮件,但不会以正确的格式发送。这是我收到的电子邮件。出于隐私原因,我隐藏了电子邮件和组织。
From-- norgun
Subject-- Test Email: ***@gmail.com Message: Sbsbdb
Message--
MIME-Version: 1.0
Content-type: text/plain; charset=iso-8859-1
From: Test <***@gmail.com>
Reply-To: <***@gmail.com>
X-Mailer: PHP/7.0.21
无论如何,正如您从上面所看到的,该人在联系表单中写的姓名,电子邮件和邮件内容都在主题行而不是实际的电子邮箱中。有没有办法可以格式化我的代码,以便他们记下的消息和名称在消息框而不是主题框中,并且电子邮件是从将电子邮件放在表单中的人发送的,而不是“ norgun“这是我为网站提出的内容?
到目前为止,这是我的代码:
<?php
$to = 'index@indexmarkets.biz';
$name = !empty($_POST['name']) ? filter_var(trim($_POST['name']), FILTER_SANITIZE_STRING) : '';
$from = !empty($_POST['email']) ? filter_var(trim($_POST['email']), FILTER_SANITIZE_EMAIL) : $to;
$message = !empty($_POST['message']) ? filter_var(trim($_POST['message']), FILTER_SANITIZE_STRING) : '';
$body = "Name: {$name}\r\nEmail: {$from}\r\nMessage: {$message}";
$body = wordwrap($body, 70, "\r\n");
$headers = [
'MIME-Version: 1.0',
'Content-type: text/plain; charset=iso-8859-1',
"From: $name <$from>",
"Reply-To: <$from>",
'X-Mailer: PHP/' .phpversion()
];
$success = mail($to, $body, implode("\r\n", $headers));
if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) === 'xmlhttprequest') {
die(json_encode(['success' => $success]));
}
echo $success ? 'Sent Successfully.' : 'An error occurred';
ini_set('display_errors', 1); error_reporting(E_ALL);
答案 0 :(得分:1)
这是因为您将变量$body
作为subject
参数传递给mail()
函数。这一行:
$success = mail($to, $body, implode("\r\n", $headers));
应该是这样的:
$success = mail($to, $subject, $body, implode("\r\n", $headers));
确保将$subject
设置为某个内容。