HTML / PHP联系表单不会将数据发送到我的Gmail

时间:2014-06-04 13:39:26

标签: php html email contact-form

我一直试图用我在这里和其他foruns找到的解决方案解决这个问题,但似乎没有任何效果。我真的很喜欢PHP。我不知道这些信息是否相关,但我在byethost.com托管我的项目,他们说这项信息支持PHP。

我在我的HTML联系页面中创建了一个联系表单,制作了一个PHP文件来处理数据并将其发送到我的gmail地址。它说消息已成功发送,但数据从未到达我的收件箱中的gmail。我尝试过以其他方式更改PHP代码(使用复制粘贴解决方案),但没有运气。我也尝试将其发送到我的hotmail帐户,但它也没有用。任何人都可以帮助我吗?

以下是HTML联系表单:

     <div id="form_wrap">
        <form method="post" action="form_process.php" id="contact_form" class="contact">
                <label>
                    <span>NOME*</span>
                    <input name="nome" type="text" tabindex="1" required>
                </label>

                <label>
                    <span>E-MAIL*</span>
                    <input name="email" type="email" tabindex="2" required>
                </label>

                <label>
                    <span>TELEFONE*</span>
                    <input name="phone" type="tel" tabindex="3" required>
                </label>

                <label>
                    <span>WEBSITE</span>
                    <input name="website" placeholder="http://" type="url" tabindex="4">
                </label>

                <label>
                    <span>MOTIVO DE CONTACTO*</span>
                    <select class="escolha" name="motivo" size="1" tabindex="5" required>
                    <option>Contratá-lo</option>
                    <option>Fazer uma pergunta</option>
                    <option>Dizer olá ou agradecer</option>
                    </select>
                </label>

                <div>
                <label>
                    <span>MENSAGEM*</span>
                    <textarea name="message" tabindex="6" required></textarea>
                </label>
                </div>

                <div>
                <input name="submit" type="submit" value="Enviar" id="submit">
                </div>

        </form>
            <a class="subtop" href="#subtop">&#8211; Voltar ao topo</a> 
        </div>

这是我的form_process.php:

    <?php
if(isset($_POST['submit'])) {

$nome = $_POST['nome'];
$email = $_POST['email'];
$phone = $_POST['phone'];
$website = $_POST['website'];
$motivo = $_POST['motivo'];
$message = $_POST['message'];

$to = "mygmailadress@gmail.com";
$subject = "Site contact form";

$header = "From: ".$fromText."\r\n";
$header .= "Cc: ".$ccText."\n";
$header .= "Reply-To : ".$fromText."\r\n";
$header .= "Return-Path : ".$fromText."\r\n";
$header .= "X-Mailer: PHP\r\n";
$header .= "MIME-Version: 1.0\r\n";
$header .= "Content-Type: text/plain; charset=iso-8859-1\r\n";

mail($to, $subject, $header, $message, "From: " . $nome);
}
if(@mail($emailRecipient, $subject, $message, $headers))
{
  echo "Mail Sent Successfully";
}else{
  echo "Mail Not Sent";
}
?>

4 个答案:

答案 0 :(得分:1)

为什么两次邮件功能?

  1. 邮件有4个参数,你给5个参数(来自第四个的paert,它应该在$ header中)
  2. 邮件功能中使用的
  3. 变量$emailRecipient不存在。
  4. 来自&#39;来自&#39;标题应该是电子邮件地址(和名称),而不仅仅是非邮件字符串

答案 1 :(得分:1)

电子邮件永远不会到达的原因有很多。

它可能被垃圾邮件捕获,被您的主机阻止,或者您的邮件功能可能在您的php.ini文件中设置不正确。

但是,从您的代码来看,您似乎错误地使用了mail()函数。

您尝试通过两次调用该函数来发送电子邮件两次。只需称它一次:

  if(mail(...)) {
    echo 'good times';
    } else {
    echo 'boo, no email was sent';
    }

其次,您使用的功能不正确。根据文档here,mail函数有五个参数:

bool mail ( string $to , string $subject , string $message [, string $additional_headers [, string $additional_parameters ]] )

$additional_headers$additional_parameters是可选的,如[方括号]所示。 $to和$subject是必需的。

第三,我强烈建议不要使用内置的mail()函数。

我建议使用SwiftMailer。它是一个全面的PHP库,可以照顾你。

答案 2 :(得分:0)

你正在尝试两次使用错误的变量名发送邮件。

此代码适用于我。

<?php
    if(isset($_POST['submit'])) {

    $nome = $_POST['nome'];
    $email = $_POST['email'];
    $phone = $_POST['phone'];
    $website = $_POST['website'];
    $motivo = $_POST['motivo'];
    $message = $_POST['message'];

    $to = "asdf@gmail.com";
    $subject = "Site contact form";

    $header = "From: ".$email."\r\n";
    $header .= "Cc: ".$email."\n";
    $header .= "Reply-To : ".$email."\r\n";
    $header .= "Return-Path : ".$email."\r\n";
    $header .= "X-Mailer: PHP\r\n";
    $header .= "MIME-Version: 1.0\r\n";
    $header .= "Content-Type: text/plain; charset=iso-8859-1\r\n";

    if(mail($to, $subject, $message, $header))
    {
      echo "Mail Sent Successfully";
    }else{
      echo "Mail Not Sent";
    }

    }
    ?>

答案 3 :(得分:0)

如果您是usinf免费托管,他们可能会限制您发送电子邮件的能力。 这样的事情正在发生:

https://www.freehosting.com/client/knowledgebase.php?action=displayarticle&id=25

PHP邮件功能仅限于免费帐户以防止滥用。要使其正常工作,您的邮件脚本应配置为使用SMTP服务器“cpanel.freehosting.com”,并使用cpanel中设置的电子邮件帐户凭据对其进行身份验证。 付费帐户提供对PHP邮件功能的无限制访问。

您可以在此链接中找到有关在PHP脚本中设置电子邮件身份验证的更多信息: http://email.about.com/od/emailprogrammingtips/qt/PHP_Email_SMTP_Authentication.htm

可选择通过在此购买相应的插件来启用PHP mail()。