2012-05-21 6 views
1

내가 완벽하게 작동하지만 첨부 파일이 여기 (내가 모든 파일 I 부하가 크기 0킬로바이트 인 attachments..but를 볼 수 있음을 의미) null이이 스크립트 코드입니다했습니다 :추가 첨부 메일

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 <[email protected]>\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("[email protected]", $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킬로바이트입니까?)

+0

, 나는 실현을 그 PHP의 PEAR 프레임 워크의 [Mail_Mime 패키지 (HTTP : //pear.php.net/package/Mail_Mime/redirected)은 훨씬 쉬웠고 문제는별로 없었습니다. 나는 당신이 그것을 시험해 볼 것을 제안한다. – Travesty3

+0

관련이 있지만'filename = \ ". $ allegato_name."\ "\ r \ n";' – sofl

+0

Travesty3에 대한 견적이 누락 된 것 같습니다. 문제는 배가 프로덕션 서버에 설치되어 있습니다. sofl 어쩌면 당신이 맞을 것입니다, 어떻게해야합니까? – Kato

답변

1

내가 PHPMailer를 사용하는 것이 좋습니다!

그냥 PHP에서 메일을 보낼 때 기쁨이 될 것이다 서버의 디렉토리에, 주요 PHP와 당신의 인생을 포함을 넣어 http://sourceforge.net/projects/phpmailer/

에서 자유롭게 사용할 수 있습니다.

가 나는 빠른 결과를 당신에게 제공 할 수있는 쉬운 시작하는 기능이 : 나뿐만 아니라 이런 식으로 시작

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; 
    } 

}