用PHP发送电子邮件 - 从未收到过

时间:2016-06-29 07:00:51

标签: php email

我正在尝试使用PHP发送电子邮件。我有以下代码:

$action=$_REQUEST['action'];
   if ($action=="")    /* display the contact form */
   {
   ?>
   <form  action="" method="POST" enctype="multipart/form-data">
   <input type="hidden" name="action" value="submit">
   Your name:<br>
   <input name="name" type="text" value="" size="30"/><br>
   Your email:<br>
   <input name="email" type="text" value="" size="30"/><br>
   Your message:<br>
   <textarea name="message" rows="7" cols="30"></textarea><br>
  <input type="submit" value="Send email"/>
  </form>
  <?php
  } 

else                /* send the submitted data */
{
$name=$_REQUEST['name'];
$email=$_REQUEST['email'];
$message=$_REQUEST['message'];
if (($name=="")||($email=="")||($message==""))
    {
    echo "All fields are required, please fill <a href=\"\">the form</a> again.";
    }
else{       
    $from="From: $name<$email>\r\nReturn-path: $email";
    $subject="Message sent using your contact form";
    mail("testing@gmail.com", $subject, $message, $from);
    echo "Email sent!";
    }
}  

我填写了缺少的字段,然后点击了提交按钮。该页面显示电子邮件已发送,但当我检查我的电子邮件时,未收到任何电子邮件。我的代码出了什么问题?

3 个答案:

答案 0 :(得分:1)

首先检查您的邮件代码是否正常

尝试这样。

if(mail("testing@gmail.com", $subject, $message, $from)){
    echo "success";
}else{
    echo "fail";
}

并检查这种情况会发出什么信息。

答案 1 :(得分:1)

试试这个工作正常..!

<form  action="" method="POST" enctype="multipart/form-data">
   <input type="hidden" name="action" value="submit">
   Your name:<br>
   <input name="name" type="text" value="" size="30"/><br>
   Your email:<br>
   <input name="email" type="text" value="" size="30"/><br>
   Your message:<br>
   <textarea name="message" rows="7" cols="30"></textarea><br>
  <input type="submit" name="submit" value="Send email"/>
  </form>
  <?php
if(isset($_POST["submit"])){
$name=$_REQUEST['name'];
$email=$_REQUEST['email'];
$message=$_REQUEST['message'];
if (($name=="")||($email=="")||($message==""))
    {
    echo "All fields are required, please fill <a href=\"\">the form</a> again.";
    }
else{       
    $from="From: $name<$email>\r\nReturn-path: $email";
    $subject="Message sent using your contact form";
    mail("testing@gmail.com", $subject, $message, $from);
    echo "Email sent!";
    }
}

答案 2 :(得分:1)

首先,您应该检查mail函数的结果,因为它可能会失败并返回false告诉您,

http://php.net/manual/en/function.mail.php#refsect1-function.mail-returnvalues

所以你需要:

if (mail("testing@gmail.com", $subject, $message, $from)) {
    echo "Email sent!";
} else {
    echo "Can't send the email!";
}

如果显示Can't send the email,请检查日志文件,确保:

  • 所有内容都在PHP&amp;网站设置。
  • 您可以从主机连接邮件服务器。

但如果显示Email sent!,但仍然无法收到该电子邮件,该怎么办?

好吧,mail函数会在以下时间返回true

  

邮件已成功接受发送

注意单词*accepted* for delivery,这意味着:好的,它现在在邮件服务器上,我完成的工作。目前还不确定邮件是否会传达给用户。< / p>

你看,电子邮件系统很复杂。您刚刚“发送”的电子邮件可能会通过多台服务器到达目的地。中间的每个服务器都可以延迟甚至取消运输。

更糟糕的是,您的用户或用户的电子邮件提供商可能会过滤掉您的电子邮件。对于安全措施,他们让您对此一无所知。

即使mail功能或PHPMailer返回true结果,您仍然无法确切知道您的电子邮件是否达到。只有您可以确定的是,邮件将被发送到功能强大的邮件服务器。

在这种情况下: