Mail_mime クラスを使用して、画像が埋め込まれた HTML/テキスト メールを送信しているときに、PEAR で問題が発生します。
スクリプトで行う必要があるのは、コンテンツのテキスト バージョンと HTML バージョンの両方を含む電子メールを提供することです。内容は多少異なります。
- テキスト バージョンには、いくつかのテキストと画像の添付ファイルが含まれます。
- HTML バージョンには、いくつかのリンクと埋め込み画像を含むレイアウトがあります。この画像はテキスト版の添付画像と同じものです。
これまでに入手したのは、プレーン テキスト バージョンと HTML バージョンを送信するスクリプトです。実際、テキスト バージョンは、私が送信するように指示しているテキスト バージョンではなく、HTML メールの簡略化されたバージョンです。
調査の結果、実際にはプレーン テキスト バージョンが電子メールで送信されることがわかりましたが、電子メール クライアントには何らかの奇妙な理由で削除された HTML バージョンしか表示されません。addHTMLImage()
それを破る方法でもあるようです。埋め込まれた画像がなければ
現時点では、私のコードは次のようになります。
<?php
require 'Mail.php';
require 'Mail/mime.php';
$to = 'your@email.com';
$additional_headers = array(
'Subject' => 'Email subject',
'From' => 'my@domain.com'
);
$text_body = <<<TEXT
This is the plain text version.
TEXT;
$html_body = <<<HTML
<p>This is the HTML version</p>
<p><img src="image.jpg" alt="" /></p>
HTML;
$mime = new Mail_mime();
$mime->setTxtBody($text_body);
$mime->setHTMLBody($html_body);
$mime->addHTMLImage(file_get_contents('default.jpg'), 'image/jpeg', 'image.jpg', FALSE);
$body = $mime->get();
$headers = $mime->headers($additional_headers);
$mailer =& Mail::factory('smtp', array(
'host' => 'my.mailserver.net',
'port' => 0,
'auth' => TRUE,
'username' => 'myusername',
'password' => 'mypassword'
));
$res = $mailer->send($to, $headers, $body);
if (PEAR::isError($res)) {
echo 'Couldn\'t send message: '.$res->getMessage();
}
?>
私の知る限り、この問題を抱えている人は他にいないようです。コードや PEAR のインストールに何か問題がありますか?