我使用下面的脚本创建了一个网络论坛。我可以收到我网站的查询;但是,访问者的电子邮件地址未显示在网站管理员发送的电子邮件中。我想在这里有一些指导来解决这个问题。
这是我的PHP脚本:
<?php $name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];
$formcontent="From: $name \n Message: $message";
$recipient = "abc@gmail.com";
$subject = "Contact Form";
mail($recipient, $subject, $formcontent) or die("Error!");
echo "Thank You!";
?>
以下是我从网站站长处获得的信息: 来自:xx 消息:xx
网站管理员发送的电子邮件中未列出任何电子邮件地址。
我在网上发现了一些类似的脚本,还有两行:
$mailheader = "From: $email \r\n";
mail($recipient, $subject, $formcontent, $mailheader) or die("Error!");
这实际上给了我一个错误输出。
如何解决问题?
谢谢!
答案 0 :(得分:0)
您可以在邮件功能中添加标题。
$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];
$formcontent="From: $name \n Message: $message";
$recipient = "abc@gmail.com";
$subject = "Contact Form";
$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type:text/html;charset=UTF-8" . "\r\n";
$headers .= "From: <$email>" . "\r\n";
mail($recipient, $subject, $formcontent, $headers);
仅供参考 - 在以这种方式使用它们之前,我会对所有POST值进行测试和验证
答案 1 :(得分:0)
mail()
的第三个参数只是邮件的实际正文,您已将其保存为$message
。 第四个变量是您定义标头的位置,您可以在其中定义邮件的身份From
。请注意,您实际上并不需要将邮件作为标题传递,因此,您的变量$formcontent
不应包含From:
标头。但是,您执行需要在提供的电子邮件地址后以"\r\n"
的形式提供回车。
修改后的代码如下所示:
<?php
$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];
$formcontent = "From: $name" . "\r\n";
$recipient = "abc@gmail.com";
$subject = "Contact Form";
mail($recipient, $subject, $message, $formcontent) or die("Error!");
echo "Thank You!";
?>
希望这有帮助! :)