PHP电子邮件格式问题

问题描述:

我通过.swf文件将表单数据发送到此PHP页面(参见下文)发送电子邮件时,如果有附件,邮件正文将不会显示,但如果没有身体附件显得很好。我知道所有的变量名都是正确的,因为所有的数据都已经从swf文件传递过来。我是否设置了电子邮件使其以这种方式工作?请告诉我。PHP电子邮件格式问题

<?php 

    $to=$_POST['toEmail']; 
    $subject=$_POST['subject']; 
    $body = $_POST['messaggio']; 
    $nome = $_POST['nome']; 
    $email = $_POST['email']; 
    $attach = $_POST['attach']; 
    $headers = "From: $nome<" . $email . ">\n"; 

if ($attach == 1) { 
    $tmp_name = $_FILES['Filedata']['tmp_name']; 
    $type = $_FILES['Filedata']['type']; 
    $name = $_FILES['Filedata']['name']; 

     if(is_uploaded_file($tmp_name)){ 
     $file = fopen($tmp_name,'rb'); 
     $data = fread($file,filesize($tmp_name)); 
     fclose($file); 
     $data = chunk_split(base64_encode($data)); 

     $headers .= "Reply-To: <" . $email . ">\n"; 
     $headers .= "MIME-Version: 1.0\n"; 
     $headers .= "Content-Type: multipart/related; type=\"multipart/alternative\"; boundary=\"----=MIME_BOUNDARY_main_message\"\n"; 
     $headers .= "X-Sender: $to <" . $to . ">\n"; 
     $headers .= "Return-Path: <" . $email . ">\n"; 
     $headers .= "This is a multi-part message in MIME format.\n"; 
     $headers .= "------=MIME_BOUNDARY_main_message \n"; 
     $headers .= "Content-Type: multipart/alternative; boundary=\"----=MIME_BOUNDARY_message_parts\"\n"; 

     $message = "------=MIME_BOUNDARY_message_parts\n"; 
     $message .= "Content-Type: text/plain; charset=\"iso-8859-1\"\n"; 
     $message .= "Content-Transfer-Encoding: quoted-printable\n"; 
     $message .= "\n";  
     $message .= $body . "\n"; 
     $message .= "\n"; 
     $message .= "------=MIME_BOUNDARY_message_parts--\n"; 
     $message .= "\n";  
     $message .= "------=MIME_BOUNDARY_main_message\n"; 
     $message .= "Content-Type: application/octet-stream;\n\tname=\"" . $name . "\"\n"; 
     $message .= "Content-Transfer-Encoding: base64\n"; 
     $message .= "Content-Disposition: attachment;\n\tfilename=\"" . $name . "\"\n\n"; 
     $message .= $data; 
     $message .= "\n"; 
     $message .= "------=MIME_BOUNDARY_main_message--\n"; 


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

     } 
    } else { 
      if(mail($to, $subject, $body, $headers)) { 
      echo "ok=1"; 
     } 
} 
?> 

建立MIME消息,尤其是附件,是很痛苦的。你最好使用类似PHPMailer的东西,它会自动为你处理整个业务......你只需要提供内容。

除此之外,您正在将附件sl到记忆中。他们多大?你超出脚本的memory_limit吗?