添加邮件附件

时间:2012-05-21 16:24:35

标签: php email header mime attachment

我的脚本运行完美,但附件是空的(我的意思是我可以看到附件..但我加载的每个文件都是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,我是如何解决的?)

1 个答案:

答案 0 :(得分: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;
    }

}