【问题标题】:Sending values of a form to an email将表单的值发送到电子邮件
【发布时间】:2013-03-09 17:00:39
【问题描述】:

您好,我正在解决将表单发送到电子邮件的问题。我创建了一个表单来向我的电子邮件发送值,当按下发送按钮时,它告诉我消息已发送,但我在雅虎或 gmail 电子邮件中看不到,我什么也没收到......

这是我的 php 代码表单:

<?php 
$ToEmail = 'mr_sergios@yahoo.com'; 
$EmailSubject = 'Site contact form'; 
 $mailheader = "From: ".$_POST["email"]."\r\n"; 
 $mailheader .= "Reply-To: ".$_POST["email"]."\r\n"; 
 $mailheader .= "Content-type: text/html; charset=iso-8859-1\r\n"; 
$MESSAGE_BODY = "Name: ".$_POST["name"].""; 
$MESSAGE_BODY .= "Email: ".$_POST["email"].""; 
$MESSAGE_BODY .= "Comment: ".nl2br($_POST["comment"]).""; 
  mail($ToEmail, $EmailSubject, $MESSAGE_BODY, $mailheader) or die ("Failure"); 
?>

<?php 
if ($_POST["email"]<>'') { 
$ToEmail = 'mr_sergios@yahoo.com'; 
$EmailSubject = 'Site contact form'; 
$mailheader = "From: ".$_POST["email"]."\r\n"; 
$mailheader .= "Reply-To: ".$_POST["email"]."\r\n"; 
$mailheader .= "Content-type: text/html; charset=iso-8859-1\r\n"; 
$MESSAGE_BODY = "Name: ".$_POST["name"].""; 
$MESSAGE_BODY .= "Email: ".$_POST["email"].""; 
$MESSAGE_BODY .= "Comment: ".nl2br($_POST["comment"]).""; 
mail($ToEmail, $EmailSubject, $MESSAGE_BODY, $mailheader) or die ("Failure"); 
?> 
   Your message was sent
      <?php 
   } else { 
  ?> 
    <form action="test.php" method="post">
   <table width="400" border="0" cellspacing="2" cellpadding="0">
  <tr>
     <td width="29%" class="bodytext">Your name:</td>
  <td width="71%"><input name="name" type="text" id="name" size="32"></td>
    </tr>
    <tr>
     <td class="bodytext">Email address:</td>
    <td><input name="email" type="text" id="email" size="32"></td>
     </tr>
      <tr>
   <td class="bodytext">Comment:</td>
        <td><textarea name="comment" cols="45" rows="6" id="comment"  
  class="bodytext">      
   </textarea></td>
  </tr>
  <tr>
   <td class="bodytext"> </td>
    <td align="left" valign="top"><input type="submit" name="Submit" value="Send"></td>
    </tr>
       </table>
   </form> 
 <?php 
  }; 
  ?>

【问题讨论】:

  • 您应该检查您的垃圾邮件部分。直接从应用程序发送的邮件经常被垃圾邮件所困扰
  • 我检查它是空的
  • 除此之外,您应该将 if 语句更改为: if (isset($_POST["email"])) {
  • 您的表单容易受到标头注入攻击。检查所有$_POST 值中的有效字符。
  • 我改变了,但它也是空的

标签: php html


【解决方案1】:

您的php.ini 中可能没有设置正确的 SMTP 设置。无论如何,我建议使用 mail() 以外的其他东西,因为它更有可能是可靠的。请改用this 之类的方法。

要么是这样,要么它只是落在了您的垃圾邮件文件夹中。

【讨论】:

【解决方案2】:

您是从 Linux 发送的吗?如果是,请检查/var/log/mail.err,看看 SMTP 是否抛出任何错误。

对于 Windows,可能需要安装 SMTP 服务器,例如 Mercury SMTP

【讨论】:

  • 尝试使用 Mercury SMTP。我不太熟悉 Windows 环境,但这应该可以完成这项工作。官网:pmail.com
【解决方案3】:

您是否考虑过使用PHP Mailer Class?

下面的示例是在同一页面上提交给自身的表单,只需将以下内容粘贴到您的联系页面的最顶部。下载并包含您的课程。

require_once('class.phpmailer.php');
$address = "you@youremail.com";
$name = htmlspecialchars($_POST['name']);
$email = htmlspecialchars($_POST['email']);
$subject = htmlspecialchars($_POST['subject']);
$comment = htmlspecialchars($_POST['comment']);

$mail  = new PHPMailer(); // defaults to using php "mail()"
$body = $comment;
$mail->AddReplyTo($email,$name);
$mail->SetFrom($email,$name);
$mail->AddReplyTo($email,$name);
$mail->AddAddress($address, "Your Name");
$mail->Subject = $subject;
$mail->MsgHTML($body);
if(isset($_POST['submit']))
{
$mail->Send();
}

【讨论】:

    【解决方案4】:

    考虑使用这个库:http://code.google.com/a/apache-extras.org/p/phpmailer/

    它非常易于设置和使用,还会在出现错误时为您提供详细信息。

    【讨论】:

      猜你喜欢
      • 2012-07-02
      • 1970-01-01
      • 2014-02-22
      • 2014-10-26
      • 1970-01-01
      • 1970-01-01
      • 2018-06-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多