[PHP-users 24897] Re: PEAR::Mail で添付ファイル付きメールが送れません。
shima tetuo
mlmlml @ lily.freemail.ne.jp
2005年 3月 16日 (水) 01:28:28 JST
tetuoです。
環境
PHP 4.3.10
Mail 1.1.4 stable
Mail_Mime 1.2.1 stable
> 間違ったいたほうの呼び出し形式だと改行コードが\r\nになってしまうため、
> ヘッダーの途中で切れたいたようです。
この添付ファイル付きメール送信の一連の流れですが、改行コードもさることな
がら、もう1つ問題点があったのかと思っています。
<?PHP
require_once('Mail.php');
require_once('Mail/mime.php');
$mime = new Mail_mime(); //あえて設定してない
$mime->setFrom('from @ sample.com');
$mime->setSubject('subject');
$mime->setTXTBody("text body");
$mime->addAttachment('./image.jpg', 'image/jpeg', '0.jpg');
var_dump($mime->headers());
$body = $mime->get();
$heads = $mime->headers();
var_dump($heads);
$mail = Mail::factory('mail');
$mail->send(
'to @ sample.com',
$heads,
$body
);
?>
上記のコードで正常に添付ファイル付きのメールが送れる事は試しているのです
が(FromとToはもちろん変えてます)、下記の部分がとても気になります。
var_dump($mime->headers()); // 1
$body = $mime->get();
$heads = $mime->headers();
var_dump($heads); // 2
1度目の「$mime->headers()」では内容として「Content-Type」が出力されませ
ん。2度目の「$mime->headers()」では「Content-Type」が出力されます。
2度目のものは「$mime->get()」を呼び出した後なので、どうもそうなっている
ようなのですが、ここを意識せずに
$mail->send(
'to @ sample.com',
$mime->headers(),
$mime->get()
);
このようなメールの送り方をすると、$mime->get()が$mime->headers()の後に呼
ばれる為、結果、ヘッダーに「Content-Type」が出力されず、添付ファイルが壊
れた(?)状態でメールが作成されます。
自分はここでかなり引っかかりました。
これは仕様なのか、バグなのか、詳しい事情が分かる方が居られましたら、解説
願います。
PHP-users メーリングリストの案内