2011-01-27 11 views
0

添付ファイル付きのメールを送信するためのPHPメール機能を実装しましたが、添付ファイルが0 KBのメールが届いています。私は以下のコードを使用しています:添付ファイル付きのphp-mail

<?php 
$fileatt = ""; // Path to the file 
$fileatt_type = "application/octet-stream"; // File Type 
$fileatt_name = ""; // Filename that will be used for the file as the attachment 

$email_from = ""; // Who the email is from 
$email_subject = ""; // The Subject of the email 
$email_txt = ""; // Message that the email has in it 

$email_to = ""; // Who the email is too 

$headers = "From: ".$email_from; 

$file = fopen($fileatt,'rb'); 
$data = fread($file,filesize($fileatt)); 
fclose($file); 

$semi_rand = md5(time()); 
$mime_boundary = "==Multipart_Boundary_x{$semi_rand}x"; 

$headers .= "\nMIME-Version: 1.0\n" . 
"Content-Type: multipart/mixed;\n" . 
" boundary=\"{$mime_boundary}\""; 

$email_message .= "This is a multi-part message in MIME format.\n\n" . 
"--{$mime_boundary}\n" . 
"Content-Type:text/html; charset=\"iso-8859-1\"\n" . 
"Content-Transfer-Encoding: 7bit\n\n" . 
$email_message . "\n\n"; 

$data = chunk_split(base64_encode($data)); 

$email_message .= "--{$mime_boundary}\n" . 
"Content-Type: {$fileatt_type};\n" . 
" name=\"{$fileatt_name}\"\n" . 
//"Content-Disposition: attachment;\n" . 
//" filename=\"{$fileatt_name}\"\n" . 
"Content-Transfer-Encoding: base64\n\n" . 
$data . "\n\n" . 
"--{$mime_boundary}--\n"; 

$ok = @mail($email_to, $email_subject, $email_message, $headers); 

if($ok) { 
echo "<font face=verdana size=2>The file was successfully sent!</font>"; 
} else { 
die("Sorry but the email could not be sent. Please go back and try again!"); 
} 
?> 

私はこのコードで問題を理解できません。誰か助けてください!

+0

問題が見つかりません。あなたの迷惑メールフォルダを確認してください – arnaud576875

+0

phpmailer(http://phpmailer.worxware.com/)のようなライブラリを使う以外に、送信する前に変数$ email_messageの内容を印刷するとどうでしょうか?完全なファイルを読んでもよろしいですか?あなたのヘッダーはどうですか? – keatch

答えて

4

おそらく私は理想主義者ばかりですが、PHPのmail()関数は問題に悩まされているように見えます。

新しいプロジェクトでは、メールボックスライブラリ(例:Swiftmailerなど)を使用することをお勧めします。これらのプロジェクトでは、ローリングケースよりもはるかに優れたエッジケースを扱う傾向があり、より広範にテストされています郵送される奇妙なものに対して

PHP自体に含まれているもの以外にも、PHPライブラリが豊富に用意されており、多くのフレームワークではMailクラスも提供されています。フレームワークとライブラリを使用すると、多くの車輪を再開発し、すべてを行うために自分自身を動かすよりも、より堅固なアプリケーションを作り出すことができます。

+2

+1 Swiftmailerの場合 – kapa

+0

+1の場合) –