我的網頁上的聯繫表格最終發送電子郵件,但它不會以正確的格式發送。這是我所得到的電子郵件。我爲隱私原因隱藏了電子郵件和組織。聯繫表格電子郵件發送,但郵件在主題
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 = '[email protected]';
$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);
您收到的答案是正確的。如果您檢查了[文檔](http://php.net/manual/en/function.mail.php),您將很快發現此錯誤。請注意,這裏的問題應該顯示一點研究成果(見** [問] **)。關於不工作的代碼的問題應該包含[mcve](這意味着,在關於PHP代碼損壞的問題中,您不應該發佈不會導致問題的HTML,JavaScript和CSS)。 –
對不起,我是新來的,我說第二種語言,所以我的語法不太好。我會確保將來做到這一點。然而,我收到的答案並不奏效,而且我在這方面做了更多的研究,你可能會想。如果我不認爲自己做了我所能做的一切,我就不會花時間問這個問題。我把其他代碼放在那裏的原因恰恰就是爲什麼我收到的答案不起作用。這是因爲我的HTML顯示我沒有用於填寫頁面查看器的主題行,這可能會影響一些答案。 – Nora
你說,「他回答我收到的東西沒有用。」它怎麼沒用?它肯定是解決你身體出現在主題中的問題的解決方案。另外,順便說一下:在這種情況下,使用'implode()'是沒有意義的。沒有理由使用它。 –