【问题标题】:Using HTML and PHP to send form data to an email使用 HTML 和 PHP 将表单数据发送到电子邮件
【发布时间】:2014-01-22 13:25:06
【问题描述】:

正如标题所说,将表格发送到我的电子邮件。我没有收到任何错误,但电子邮件从未收到。这是我的 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 文件的其余部分,但这是所有真正功能所在的地方。

【问题讨论】:

  • mail() 返回一个布尔值。也许你想检查一下。您的邮件服务器配置是否正确?
  • 你没有回应$errors所以你从来没有见过它。 if( empty($errors)) { }else echo $errors;
  • 而你的 preg_match 总是返回 $errors .= "\n Error: Invalid email address"; ,所以 empty($errors) 总是 false 并且你的电子邮件永远不会发送
  • 感谢所有提供帮助的人,这是我的邮件服务器的配置问题。代码一切正常,错误位在我没有发布的单独位中。

标签: php html forms email


【解决方案1】:

*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);
?>

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

【讨论】:

    【解决方案2】:

    尝试添加顶级文件: 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!';
    }
    

    阅读:

    【讨论】:

      【解决方案3】:

      $to = 删除括号后,您将变量 $myemail 作为字符串值,您的代码将正常工作

      【讨论】:

        【解决方案4】:

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

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

        我已经详细提到了here

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2015-10-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-02-22
          • 2012-07-02
          • 1970-01-01
          相关资源
          最近更新 更多