0

Mail_mime クラスを使用して、画像が埋め込まれた HTML/テキスト メールを送信しているときに、PEAR で問題が発生します。

スクリプトで行う必要があるのは、コンテンツのテキスト バージョンと HTML バージョンの両方を含む電子メールを提供することです。内容は多少異なります。

  1. テキスト バージョンには、いくつかのテキストと画像の添付ファイルが含まれます。
  2. 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 のインストールに何か問題がありますか?

4

2 に答える 2

0

行末文字を Mail_mime クラスのコンストラクターに渡します。

「\n\r」のウィンドウ - またはその逆、覚えていない

于 2010-11-09T13:28:16.703 に答える
0

本日、同じ問題に遭遇し、広範な調査を行いました。私たちが発見したのは、Mozilla Thunderbird が、Content-Type大文字化パターンに従っていない ABNF 文字列をチョークすることです。テストした他のすべての電子メール クライアントでは、代替テキストは期待どおりに機能しました。

だから、あなたの問題はおそらくあなたのクライアントです。これがあなたを正しい方向に向けるのに役立つことを願っています。

于 2011-05-26T20:02:59.837 に答える