【问题标题】:Email is not sending using php电子邮件未使用 php 发送
【发布时间】:2013-09-25 03:48:27
【问题描述】:

我正在使用以下代码将附件发送到电子邮件...但我无法收到电子邮件..

我能够获得成功发送邮件的消息,例如“已发送消息”,但电子邮件不会发送到相应的邮件 ID..

我没有做错的地方......

这是 php 文件...

             <?php

   if(isset ($_POST["send"]))
   {
        $upload_name=$_FILES["upload"]["name"];
        $upload_type=$_FILES["upload"]["type"];
        $upload_size=$_FILES["upload"]["size"];
        $upload_temp=$_FILES["upload"]["tmp_name"];
        $message=$_POST["msg"];
        $subject = $_POST["subject"];
        $to=$_POST["to"];


     if($message==""||$subject==""||$to=="")
    {
       echo '<font style="font-family:Verdana, Arial; font-size:11px; color:#F3363F; font-weight:bold">Please fill all fields</font>';
     }
    else
    {
    $fp = fopen($upload_temp, "rb");
     $file = fread($fp, $upload_size);

     $file = chunk_split(base64_encode($file));
    $num = md5(time());

//普通头文件

     $headers  = "From: Info Mail<Info@example.com>\r\n";
   $headers  .= "MIME-Version: 1.0\r\n";
   $headers  .= "Content-Type: multipart/mixed; ";
   $headers  .= "boundary=".$num."\r\n";
   $headers  .= "--$num\r\n";

// 这两个步骤有助于避免垃圾邮件

       $headers .= "Message-ID: <".gettimeofday()."     TheSystem@".$_SERVER['SERVER_NAME'].">\r\n";
      $headers .= "X-Mailer: PHP v".phpversion()."\r\n";

// 带消息

   $headers .= "Content-Type: text/html; charset=iso-8859-1\r\n";
   $headers .= "Content-Transfer-Encoding: 8bit\r\n";
   $headers .= "".$message."\n";
   $headers .= "--".$num."\n";

// 附件标题

   $headers  .= "Content-Type:".$upload_type." ";
   $headers  .= "name=\"".$upload_name."\"r\n";
   $headers  .= "Content-Transfer-Encoding: base64\r\n";
   $headers  .= "Content-Disposition: attachment; ";
   $headers  .= "filename=\"".$upload_name."\"\r\n\n";
   $headers  .= "".$file."\r\n";
   $headers  .= "--".$num."--";

// 发送邮件

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


 fclose($fp);

echo '<font style="color:#333333">Mail sent please check inbox and spam both <br /></font>';
   }
  }

 ?>

//表单详情和添加附件的HTML代码..

          <form id="attach" name="attach" method="post" action="<?php echo $_SERVER["PHP_SELF"]; ?>" enctype="multipart/form-data">
            //Html code for mail details
           </form>

我收到“警告:mail() [function.mail]:mail() 函数的参数错误,邮件未发送......”并且它还显示“已发送邮件,请检查收件箱和垃圾邮件” ..有什么问题?

帮我解决这个问题...

【问题讨论】:

  • 请记住,您需要在执行 PHP 的同一台服务器上运行 SMTP 服务器才能发送电子邮件。
  • 为什么要关闭对mail 的呼叫的警告?删除那个@,看看你会收到什么警告。
  • 为你自己节省一个痛苦的世界并停止使用 mail() 使用我们都使用的库之一:phpmailer,swiftmailer。学习 CSS 可能会有所帮助:-)
  • 如果您运行的是 Linux 并且您有 shell 访问权限,请在命令行中尝试mail 命令以查看您的邮件设置是否正确。
  • @Dagon 我是 php 新手,我如何使用 phpmailer、swiftmailer 而不是上面的使用过程..给我一些例子或一些解释..请

标签: php email


【解决方案1】:

您正在将错误数据传递给邮件功能。前往http://php.net/manual/en/function.mail.php 并阅读说明如何使用它的文档。

另请注意,它返回一个布尔值,告诉您您的邮件尝试是否成功,至少:

....
$success = mail(...);
if ($success) {
  echo "<p>mail sent</p>";
} else {
  echo "<p>error: mail was not sent.</p>";
}

这样您的代码就不会谎报它是否发送了邮件。

至于您的海量数据:全部评论。然后逐步取消注释位,直到它中断。你现在已经找到了问题,并且可以通过查看你给它不喜欢的 mail() 函数提供什么来解决它。

【讨论】:

    猜你喜欢
    • 2013-07-18
    • 1970-01-01
    • 2013-07-13
    • 1970-01-01
    • 2012-09-12
    • 1970-01-01
    • 2014-04-29
    • 1970-01-01
    相关资源
    最近更新 更多