在提交表单后向数据库添加数据并发送电子邮件

时间:2015-10-14 09:54:31

标签: php html email

我不知道为什么但在提交html表单后我无法收到任何电子邮件。 我可以看到数据库中的数据,但我没有收到任何电子邮件。 我在发送后放了一些代码就可以了。只有邮件没有发送。

请帮帮我。

PHP文件:

<?php
$Name = $_POST['Name'];
$Phone= $_POST['Phone'];
$Email= $_POST['Email'];
$Subject= $_POST['Subject'];
$Message= $_POST['message'];

$conn = mysql_connect("MyServerName", "userName", "password");

mysql_select_db("Mydbname",$conn);


$sql = "INSERT INTO FC(Name, Phone, Email, Subject, Message)
VALUES ('$Name', '$Phone', '$Email', '$Subject', '$Message')";

if (mysql_query($sql, $conn)) {

    $to = "myEmail@test.com"; // this is your Email address
    $from = "myEmail@test.com"; // this is the sender's Email address
    $headers = "From: " .  $Email;
    $subject = "Form submission - " . $Subject;
    $message = $Name . " wrote the following:" . "\n\n" . $Message . "\n\n" . "His Phone number is: " . $Phone;

    mail($to,$subject,$message,$headers);


echo '<html>
    <head>
        <meta http-equiv="refresh" content="0.1;url=http://www.google.com" />
    </head>
    <body>';

echo '<script language="javascript">';
echo 'alert("message successfully sent! we will contact you shortly.")';
echo '</script>';

echo '</body></html>';

} else {
 echo "something went wrong";
}

?>

1 个答案:

答案 0 :(得分:0)

首先检查邮件的返回值,以查看SMTP服务器是否接受该邮件。

请确保您的php.ini文件中没有阻止mail()。

如果您的邮件功能返回FALSE,那么您就会知道邮件配置存在问题。如果它返回TRUE,那么您的邮件配置可能仍然有问题。无论哪种情况,您都需要检查邮件日志,看看是否有任何错误。

问题在于,php可能正在切换邮件,您的服务器可能会发送邮件,并且可能会在此过程中过滤掉垃圾邮件。

您可以尝试使用-f参数显式设置From地址,如php.net手册页中的示例#3中所述,用于邮件:

$from = "-fmyEmail@test.com";
mail($to,$subject,$message,$headers,$from);

因此,根据您的托管规范,您的发件人地址可能无效,但如果不是:

class Telephone {

  ...

  static namedQueries = {
    byPerson{ Person p ->
      eq 'person', p
    }          
  }
}