2

私は、フォーラムが記入された後に人々に HTML メールを送信するプロジェクトに取り組んでいます。コードの HTML 部分が機能するようになりましたが、何らかの理由で、画像を埋め込むときに上部にバナー画像を表示できません。私のコード。以前は最新バージョンの PHP で作業していましたが、サーバーでスクリプトを実行するには、PHP 5.3 にダウングレードする必要がありました。それ以来、同じコードを使用しましたが、失敗しました。さまざまな方法を試しましたが、効果が証明されたものはありません。これが私のコードです

    require_once('Mail.php');
    require_once('Mail/mime.php');

    $smtp_credentials = array('host' => 'smtp.postmarkapp.com', 'port' => 25, 'auth' =>          TRUE, 'username' => '*', 'password' => '*'); 

    $headers = array('From' => '*', 'To' => $email, 'Subject' => $subject);

    $mime = new Mail_mime(array('eol' => PHP_EOL));

    $file = '/*/*/*/dls.jpg';
    $mime->addHTMLImage(file_get_contents($file),'image/jpeg',basename($file),false, "blackstone");                   

    #I used this code to fish out the cid out of mime I tried echoing this out and 
    # it returned blackstone which I defined as the 5th parameter of addHTMLImage which
    # sets the cid. 
    $cid=$mime->_html_images[count($mime->_html_images)-1]['cid'];

    $banner = '<span style="color:#1f497d">
    <img width = "623" height = "85" src = "cid:' . $cid . '" />
    </span>';

    $message_text = $banner;

    $mime->setHTMLBody($message_text);

    $mime->setTXTBody($body_text);

    $mail = Mail::factory('smtp', $smtp_credentials);

    try {
    $send = $mail->send($email, $mime->headers($headers), $mime->get());

    } catch (Exception $e) {

    echo $e->getMessage(); die;
    }

    echo 'mail sent!';

多くのメール クライアントが cid でうまく動作しないため、cid をまったく使用しないことを好むなど、さまざまなことを試しましたが、PEAR マニュアルでは、src 属性で cid を使用することをお勧めします。私は gmail を使用していますが、新しいバージョンの php を実行していたときに機能したため、これは問題ではないと思います。メールを開くたびに、その html 部分が機能します。画像があるはずの場所に小さな画像アイコンがありますが、画像は表示されません。

4

1 に答える 1

-1

画像のURLは絶対URLである必要があります..パスではありません(相対または絶対)..パスにすることはできません。画像への完全なURLである必要があります。

したがって、以下のような有効なURLを使用する必要があります。

http://www.example.com/images/image-name.jpg

以下のようなものは機能しません。

../path/to/images/image-name.jpg

以下についても同じことが言えます(機能しません):

/root/public/path/to/images/image-name.jpg

したがって、画像に有効なURLを指定していることを確認してください。

于 2013-02-17T15:19:30.220 に答える