1

我有这个表格

<form method="POST" action="mailer.php">
    <div id="email"><input type="email" name="email" class="email" placeholder="example@example.com"></div>
</form>

而这个 PHP

<?php

$email = $_POST['email'];
$to = "test@test.com";
$subject = "ADD THIS EMAIL ADDRESS TO THE MAILING LIST";
$body = "\n\n";
$url = 'http://10.0.1.1/~ewiuf';
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
    echo '<script> alert("PLEASE ENTER A VALID EMAIL ADDRESS") </script>';
    echo '<META HTTP-EQUIV=Refresh CONTENT="0; URL=' . $url . '">';
} else {
    if (mail($to, $subject, $body)) {
        echo '<script> alert("THANK YOU FOR SUBSCRIBING TO THE NEWSLETTER") </script>';
        echo '<META HTTP-EQUIV=Refresh CONTENT="0; URL=' . $url . '">';
    } else {
        echo '<script> alert("THERE WAS AN UNEXPECTED ERROR. PLEASE TRY AGAIN LATER") </script>';
        echo '<META HTTP-EQUIV=Refresh CONTENT="0; URL=' . $url . '">';
    }
}
?>

为什么表单的内容(应该是电子邮件地址)没有包含在脚本发送的电子邮件正文中?脚本发送、验证,但用户在表单中输入的电子邮件地址没有发送给我。请帮忙,谢谢。

4

3 回答 3

2

您需要告诉它向您发送用户的电子邮件。尝试这个:

<?php
$email = $_POST['email'];
$to = "test@test.com";
$subject = "ADD THIS EMAIL ADDRESS TO THE MAILING LIST";
$body = "User Email: ".$email;
$url = 'http://10.0.1.1/~ewiuf';
if(!filter_var($email, FILTER_VALIDATE_EMAIL))
{
echo '<script> alert("PLEASE ENTER A VALID EMAIL ADDRESS") </script>';
echo '<META HTTP-EQUIV=Refresh CONTENT="0; URL='.$url.'">';
}
else
{
if (mail($to, $subject, $body)) {
echo '<script> alert("THANK YOU FOR SUBSCRIBING TO THE NEWSLETTER") </script>';
echo '<META HTTP-EQUIV=Refresh CONTENT="0; URL='.$url.'">';
 } else {
echo '<script> alert("THERE WAS AN UNEXPECTED ERROR. PLEASE TRY AGAIN LATER") </script>';
echo '<META HTTP-EQUIV=Refresh CONTENT="0; URL='.$url.'">';
 }
}
?>
于 2011-09-17T23:37:26.527 回答
2

$body = "\n\n";是您设置或更改$body变量的唯一位置,也就是您作为主体(第三个参数)发送给mail函数的变量。

在您的情况下,我假设您只想将电子邮件地址放在正文中,因此您应该使用$body = $email;它,或者只是使用$email而不是$body作为mail.

于 2011-09-17T23:37:52.277 回答
0

您正在 $body 中发送“\n\n”。如果我的问题是正确的,您可能想在其中添加 $email,例如 $body = "\n\n" + $email

希望有帮助

于 2011-09-17T23:40:54.853 回答