联系表单电子邮件发送,但邮件在主题中

时间:2017-08-14 00:03:00

标签: php email

我的网页上的联系表单最终会发送电子邮件,但不会以正确的格式发送。这是我收到的电子邮件。出于隐私原因,我隐藏了电子邮件和组织。

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);

1 个答案:

答案 0 :(得分:1)

这是因为您将变量$body作为subject参数传递给mail()函数。这一行:

$success = mail($to, $body, implode("\r\n", $headers));

应该是这样的:

$success = mail($to, $subject, $body, implode("\r\n", $headers));

确保将$subject设置为某个内容。