2012-04-30 11 views
2

添付ファイルのメールに問題があります。 ヘッダーにすべて含まれるhtml(テキストとして解析される)およびfile(テキストとしても解析される)を含むヘッダーは、メッセージ本文として表示されます。このコードはうまくいきましたが、私は何が変わったのか理解できません。メール本文に表示されるメールヘッダー、ファイルなし、HTMLなし

ランダムな要素がありますが、メールが正しく到着することはありますが、メールが破損して動作するようなパターンがあるとは思われません。

これがメールを生成するために私のコードです:

$file = $path.$filename; 
$file_size = filesize($file); 
$handle = fopen($file, "r"); 
$content = fread($handle, $file_size); 
fclose($handle); 
$content = chunk_split(base64_encode($content)); 
$uid = md5(uniqid(time())); 
$name = basename($file); 
$header .= "MIME-Version: 1.0\r\n"; 
$header .= "Content-Type: multipart/mixed; boundary=\"".$uid."\"\r\n\r\n"; 
$header .= "This is a multi-part message in MIME format.\r\n"; 
$header .= "--".$uid."\r\n"; 
$header .= "Content-Type: text/html; charset=utf-8\r\n"; 
$header .= "Content-Transfer-Encoding: 7bit\r\n\r\n"; 
$header .= $message."\r\n\r\n"; 
$header .= "--".$uid."\r\n"; 
$header .= "Content-Type: application/octet-stream; name=\"".$filename."\"\r\n"; 
// use different content types here 
$header .= "Content-Transfer-Encoding: base64\r\n"; 
$header .= "Content-Disposition: attachment; filename=\"".$filename."\"\r\n\r\n"; 
$header .= $content."\r\n\r\n"; 
$header .= "--".$uid."--"; 
$mailto = '[email protected]'; 
if (mail($mailto, $subject, "", $header)) { 

    echo "1"; // or use booleans here 
} else { 
    echo "mail send ... ERROR!"; 
} 

私はすべてのヘッダを削除しようとした、そしてそれが動作すること、次のヘッダーでのみ残っていた。

$header .= "Content-Type: text/html; charset=utf-8\r\n"; 
$header .= "Content-Transfer-Encoding: 7bit\r\n\r\n"; 
$header .= $message."\r\n\r\n"; 

ので、そのかなりusless 、multipart/attachment/anythingはありませんが、HTMLは解析されます。

何がヘッダを壊す可能性がありますか? ありがとう!

答えて

2

ヘッダは(その最初のエントリはMIME-Version: 1.0する必要があります)右のないコンテンツ--38fd5b8f9b812b5db3ec89cd01b6bd9cであなたの変数$header開始...境界で始めるべきではありませんヘッダ、本体だけを示しています。そこに忍び寄るから$headerのいずれかの以前の定義を停止する必要があります

$header= "MIME-Version: 1.0\r\n"; 

:へ

$header.= "MIME-Version: 1.0\r\n"; 

:特にあなたは、コード、私は追加修正を書式設定が、ラインの切り替えを取り除い与えられ、これが起こっている場所を言うのは難しいです。

+0

OK、今は恥ずかしいですが、あなたは正しいです:)。 $ headers = '';を追加しようとしました。私はunset($ headers)をしようとしましたが、どちらもうまくいきませんでしたので、それを取り除くことさえ考えませんでした。本当にありがとう、それは実際に働いた - 私は 'を削除しました。 。=そしてすべてが今良いです。私は少しも過小評価しません。再び... – Yanipan

関連する問題