我正在尝试从表单中提取值并通过电子邮件发送给他们。它目前只通过电子邮件发送$ to和$ subject值,但不会发送标题或正文组件。任何帮助,将不胜感激。 表格代码:
<body>
<div class="form-style-6" >
<h1> <img src="../assets/img/navBar_logo.png" style = " padding- top: 20px; padding-right:30px; padding-left: 20px;"> Contact Manager</h1>
<form action="contactform_email.php" method="get" name="f1">
<input type="text" name="name" placeholder="Name" />
<input type="text" name="email" placeholder="Email" />
<textarea name="message" placeholder=""></textarea>
<input type="submit" value="Send" />
</form>
</div>
</body>
and the PHP to pull the values
<?php
$to = "manager@plumorchard.com";
$subject = "Contact Manager";
$headers = "Reply-To: ".$_GET['email'];
$body = "Name : ". $_GET['name']."\n".
"Email : ". $_GET['email']."\n".
"Message : ". $_GET['message']."\n".
mail($to, $subject, $body, $headers);
?>
<b>Thank you for applying online! The apartment manager will get back to you shortly.</b>
答案 0 :(得分:0)
据我所知,您需要使用POST请求来获取textarea的内容。 GET请求不会对间隔和换行句子起作用,因为它们直接放在您的请求所指向的URL中。 POST请求确保您的内容被附加到您的HTTP请求中,因此您实际上可以从中获取所需的所有信息。
另请注意,此代码根本不安全,并且易于使用跨站点脚本!在处理之前始终验证用户输入。
答案 1 :(得分:0)
你的语法是正确的,但你做了一件你不想要的事情
$body = "Name : ". $_GET['name']."\n".
"Email : ". $_GET['email']."\n".
"Message : ". $_GET['message']."\n".
mail($to, $subject, $body, $headers);
由于邮件与body变量联系,因此无法使用它,因此请将代码更改为:
$body = "Name : ". $_GET['name']."\n".
"Email : ". $_GET['email']."\n".
"Message : ". $_GET['message']."\n"; // notice I replaced the dot
mail($to, $subject, $body, $headers);
您在邮件末尾有一个点,导致了这一点。 您可以更好地使用POST而不是GET,
由于发送电子邮件非常复杂,请使用phpmailer或swiftmailer
等库答案 2 :(得分:0)
使用POST
<form action="contactform_email.php" method="POST" name="f1">
在php中
<?php
if(isset($_POST)){
$to = "manager@plumorchard.com";
$subject = "Contact Manager";
$headers = "Reply-To: ".$_POST['email'];
$body = "Name : ". $_POST['name']."\n".
"Email : ". $_POST['email']."\n".
"Message : ". $_POST['message']."\n".
mail($to, $subject, $body, $headers);
}
?>
答案 3 :(得分:0)
我同意以前关于使用POST和编码器的不安全性的答案,但提出一个想法 - 你似乎在你的最终表单字段之后有一个尾随点,这将是一个问题,因为它将尝试连接下一个element,在本例中是mail函数,$ body元素没有结束分号。:
在连接的$ body语句的最后部分用分号替换点。
"Message : ". $_GET['message']."\n";
答案 4 :(得分:0)
执行此操作...将form =“post”属性添加到表单中,并在php中,只是为了测试,请使用以下行:<?php print_r($_POST); ?>
- 这应该将您设置在正确的路径上。