使用HTML和PHP将表单数据发送到电子邮件

时间:2014-01-04 23:23:33

标签: php html forms email

就像标题所说,将表格发送到我的电子邮箱。我没有错误,但电子邮件永远不会出现。这是我的HTML表单(我认为你不需要其他任何东西,但文件中也有一些格式化和Java验证)。

<form method="POST" name="contactform" action="contact-form-handler.php">
    <p>
        <label for='name'>Your Name:</label>
        <br>
        <input type="text" name="name">
    </p>
    <p>
        <label for='email'>Email Address:</label>
        <br>
        <input type="text" name="email">
        <br>
    </p>
    <p>
        <label for='message'>Message:</label>
        <br>
        <textarea name="message"></textarea>
    </p>
    <input type="submit" value="Submit">
    <br>
</form>

这是我的PHP。显然我把我的电子邮件拿出来放入EMAIL,但除此之外,这是我完整的PHP文件。谢谢你的PHP文件提取了提交的页面就好了,我没有错误。只是没有电子邮件。

<?php 
$errors = '';
$myemail = 'EMAIL@gmail.com';
if(empty($_POST['name'])  ||
   empty($_POST['email']) ||
   empty($_POST['message']))
{
    $errors .= "\n Error: all fields are required";
}
$name = $_POST['name'];
$email_address = $_POST['email'];
$message = $_POST['message'];
if (!preg_match(
"/ ^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/i",
$email_address))
{
    $errors .= "\n Error: Invalid email address";
}
if( empty($errors))
{
    $to = '$myemail';
    $email_subject = "Contact form submission: $name";
    $email_body = "You have received a new message. ".
        " Here are the details:\n Name: $name \n ".
        "Email: $email_address\n Message \n $message";
    $headers = "From: $myemail\n";
    $headers .= "Reply-To: $email_address";
    mail($to,$email_subject,$email_body,$headers);
    //redirect to the 'thank you' page
    header('Location: contact-form-thank-you.html');
}
?>

提前感谢您提供的任何帮助!如果需要,我可以提供我的HTML文件或其他PHP文件的其余部分,但这是所有真正功能所在的地方。

4 个答案:

答案 0 :(得分:8)

* PHP将表单数据发送到我已使用此代码的电子邮件以及我的工作。您可以尝试*

<?PHP
$email = $_POST["emailaddress"];
$to = "you@youremail.com";
$subject = "New Email Address for Mailing List";
$headers = "From: $email\n";
$message = "A visitor to your site has sent the following email address to be added to your mailing list.\n

Email Address: $email";
$user = "$email";
$usersubject = "Thank You";
$userheaders = "From: you@youremailaddress.com\n";
$usermessage = "Thank you for subscribing to our mailing list.";
mail($to,$subject,$message,$headers);
mail($user,$usersubject,$usermessage,$userheaders);
?>

之后你可以添加你的更多代码

答案 1 :(得分:1)

尝试在顶部文件中添加: error_reporting(E_ALL);

并编辑您的代码,请参阅:

if(mail($to,$email_subject,$email_body,$headers)){
    //redirect to the 'thank you' page
    header('Location: contact-form-thank-you.html');
} else {
    echo 'Error!';
}

阅读本文:

答案 2 :(得分:0)

你有$ myemail变量作为字符串值后$ to =删除括号,你的代码将起作用

答案 3 :(得分:0)

问题在于 $ headers 变量中的发件人字段。 你不能只在那里放任何电子邮件地址。例如:您应该放置您创建的服务器的现有电子邮件地址。或者,如果您想在来自字段中使用Gmail帐户,则需要先使用服务器配置您的gmail用户名和密码,然后再使用该电子邮件。

最简单的解决方案是在您的托管服务器上创建一个新的电子邮件地址,然后将该电子邮件地址放在$ headers变量的 from 字段中。

我已经详细提到了here