[PHP-users 6765] Re: pdfファイルをメール添付する方法(サマリ)

S.Okazaki php-users@php.gr.jp
Tue, 09 Apr 2002 14:27:35 +0900


加藤様

こんにちは、岡崎です。

> 直接の回答はできませんが、元のメールにはかかれていない
> 1.動作環境
>    いつもお世話になっているのだったら、目にたこができる
>    くらい頻繁に出てくるフレーズのはずなんだけど、
>    なぜ書けない?
>    fopenでバイナリファイルを開く場合、UnixとWindowsでは
>    書き方が違います。動作環境がわからないと、ここで
>    ミスしているかどうか、読み手には判断できない。

その通りでした。環境は、TurboLinux7 PHP4.1.2です。
また、過去ログを検索中に
http://ns1.php.gr.jp/php-jp/archives/msg11742.html
を見つけ(またまた、松嶋様提供です(^^;)

【1】-----------------------------------
$fp=fopen("$fileopen","r");
while(!feof($fp)) {
    $attach .=fgets($fp,4096);
}
fclose($fp);
----------------------------------------
これを
【2】-----------------------------------
$fp=fopen("$fileopen","r");
$attach=fread($fp,filesize($fileopen));
fclose($fp);
-----------------------------------------
のように、変えると、上手くいきました。
赤マンモスでfopen("$str","b")に付いての記述をみ、
Linux環境でも、使える同様の関数を探しておりました。

(中略)

> 3.送られてきたメールではどうなる?
>     添付ファイルとしては認識されるけどPDFファイルとして
>     認識されないのか、添付ファイルとしてすら認識されないのかで、
>     原因はかわってくるけど、こういう具体的な現象が書いてないし。

【1】の時は、当たり前ですが、テキスト形式(これをテキストと呼ぶのか
どうか分かりませんが、バイナリデータではありません)
のファイルになり、テキストエディタで開くと訳の分からない文字列が
並んでいました。
ブラウザで生成された同じ内容のpdfファイルをテキストエディタで開いたと
きと、ほとんど同じような?内容でした。
故に、生成したpdfファイルのバイナリデータを読み込みテキストデータとして、
$attachに書き込んだのだと判断しました。

(中略)

> 4.いろいろやったとは具体的には?
>     sendAttachMailを使わない方法も試したということ?
>     それともsendAttachMailの中をいろいろ書き換えて試したの?

本来は mb_send_mail($from,$to,$header)で、
$header .="Content-Type: Multipart/Mixed;
boundary=-*-*-*-*-*-*-*-*-Boundary_b3cb27754dabb0";
$header .="Content-Transfer-Encoding: Base64";
・・・・
等とやりたかったのですが、どうしても上手くいかず、松嶋様提供
の関数を使わせていただきました。



/_/_/_/_/_/_/_/_/_/_/_/_/_/
Japan Human Base 
Sotaro Okazaki
Email : okazaki@jp-hb.com
/_/_/_/_/_/_/_/_/_/_/_/_/_/