1

我有这个完美运行的脚本,但附件是空的(我的意思是我可以看到附件..但我加载的每个文件的大小都是 0 kb)这里是代码:

allegato 意味着附件

  $path = $allegato['tmp_name'];
  $fp = fopen($path, 'r');
  do //we loop until there is no data left
  {
    $data = fread($fp, 8192);
    if (strlen($data) == 0) break;
    $content .= $data;
  } while (true);
  $content_encode = chunk_split(base64_encode($content));


  $mime_boundary = "<<<--==+X[".md5(time())."]";

  $headers .= "From:".$email."\r\n"; 
  $headers .= "To: me <mail@gmail.com>\r\n"; 

  $headers .= "MIME-Version: 1.0\r\n";
  $headers .= "Content-Type: multipart/mixed;\r\n";
  $headers .= " boundary=\"".$mime_boundary."\"";

  $message .= "This is a multi-part message in MIME format.\r\n";
  $message .= "\r\n";
  $message .= "--".$mime_boundary."\r\n";

  $message .= "Content-Type: text/plain; charset=\"iso-8859-1\"\r\n";
  $message .= "Content-Transfer-Encoding: 7bit\r\n";
  $message .= "\r\n";
  $message .= "Email sent from:".$nome." \r\n";
  $message .= $messaggio."\r\n";
  $message .= "--".$mime_boundary."\r\n";

  $message .= "Content-Type: ".$allegato_type."\"\r\n";
  $message .= " name=\ ".$allegato_name."\"\r\n";
  $message .= "Content-Transfer-Encoding: base64\r\n";
  $message .= "Content-Disposition: attachment;\r\n";
  $message .= " filename=\ ".$allegato_name."\"\r\n";
  $message .= "\r\n";
  $message .= $content_encode;
  $message .= "\r\n";
  $message .= "--".$mime_boundary."\r\n";

  $ok = mail("mail@gmail.com", $object, $message, $headers);

  if($ok)
   {
     echo'<script type="text/javascript">alert("mail sent successfully ! ");</script>';
   }
 else
     { echo'<script type="text/javascript">alert("mail failed! ");</script>';}

有人可以帮忙处理附件吗?(发送的每个文件都是 0 kb,我如何修复它?)

4

1 回答 1

1

我建议使用PHPMailer!

它可从http://sourceforge.net/projects/phpmailer/免费获得

只需将它放在服务器上的一个目录中,包括它的主要 php,当您从 php 发送电子邮件时,您的生活就会变得愉快。

我有一个简单的开始功能,我可以提供给您以获得快速的结果:

require("/path/to/class.phpmailer.php");

function mail_sender($from_name,$from_email,$to_email,$subject,$mailtext,$att = false) {

    $mail = new PHPMailer();

    $mail->IsSMTP();                // set mailer to use SMTP
    $mail->Host = "localhost";      // specify main and backup server
    $mail->SMTPAuth = false;        // turn on SMTP authentication

    $mail->From = $from_email;
    $mail->FromName = $from_name;
    $mail->WordWrap = 50;           // set word wrap to 50 characters
    $mail->IsHTML(true);            // set email format to HTML
    $mail->CharSet="utf-8";  

    $mail->Subject = $subject;
    $mail->Body    = $mailtext;
    $mail->AltBody = "";

    $mail->AddAddress($to_email);

    if ($att) {
        $mail->AddAttachment("include/attachment.doc");
    }

    if(!$mail->Send())  {
           echo "Message could not be sent. <p>";
           echo "Mailer Error: " . $mail->ErrorInfo;
           exit;
    }

}
于 2012-05-31T17:15:21.477 回答