0

メールテンプレートのページを作成し、プレビューテンプレートのボタンも設定しました。

ローカルマシンからのイメージパスを次のように設定しました。

  src="/projectname/app/webroot/img/logo.JPG"

そのテンプレートをプレビューすると、ロゴが表示されます。

そのテンプレートを使用すると、メールを送信するときに画像がメールに表示されません。

それで、誰かが問題になる可能性があるものを教えてもらえますか、または私はmimeタイプのようなものが欠けていますか?

ありがとう、

4

5 に答える 5

2

これは機能しません。メールはクライアントで開かれますが、「/ projectname / app / webroot / img / logo.JPG」のようなパスはそのクライアントにとってどのような意味がありますか?ドメインとは何ですか?

src = "http://example.com/projectname/app/webroot/img/logo.JPG"のように、SRCにドメインを追加することができます。ただし、これはセキュリティ上のリスクがあるため、デフォルトでは表示されません。各メールにsrc="http://example.com/feedback?id=12345"のような画像を含むスパマーを想像してみてください。ここで、IDはメールの送信先の各メールアドレスを識別します。この画像をダウンロードする各クライアントは、この電子メールの受信を確認し、スパマーにスパムを読んでいることを知らせます。ほとんどの電子メールクライアントは、メールで参照されている画像をダウンロードする必要があるかどうかを明示的に尋ねます。

別の解決策は、各電子メールを電子メールの添付ファイルとして含めることです。そうすれば、それを「インライン」画像として参照できます。これは外部接続を必要とせず、セキュリティリスクが少なく、ほとんどの場合、クライアントでデフォルトで許可されています。

インライン化もサポートしていると思われるコンポーネントをグーグルで検索しましたが、他のコンポーネントも見つかる可能性があります:http: //bakery.cakephp.org/articles/CraZyLeGs/2006/12/18/swiftmailer-component-tutorial

于 2012-04-25T12:31:49.050 に答える
1

メール内では、相対パスではなく、フルパスを使用する必要があります。CakePHPでこれを簡単に行うには、次のようなFULL_BASE_URL定数を使用します。HTML Helper

<?php
echo $this->Html->image(
    FULL_BASE_URL . $photo['Photo']['path'].$photo['Photo']['filename']
);
?>

(明らかにこれは1行で実行できますが、StackOverflowで読みやすくするために分解しました)

于 2012-04-25T12:55:21.920 に答える
0

これはおそらく、ローカルマシンでテストする場合、そのパスで問題がないためです。しかし、自分自身にメールを送信すると(たとえば、Gmail)、ブラウザはおそらくどこかのような画像をhttp://mail.google.com/gmail/projectname/app/webroot/img/logo.JPG探し、そこで画像を見つけることができません。したがって、画像ソースをのようなものに設定する必要がありますhttp://localhost/projectname/app/webroot/img/logo.JPG

于 2012-04-25T12:11:35.153 に答える
0

電子メールクライアントには、画像への絶対パスが必要です。HTMLヘルパーを使用して、完全なベースを添付します。

<?= $this->Html->image("logo.JPG", array('fullBase' => true)) ?>

/projectname/app/webroot/img/HTMLヘルパーを使用する場合は必須ではないことに注意してください。

于 2014-07-17T22:56:41.967 に答える
0

CakePHP v1.2または1.3を使用している場合(はい、非推奨ですが、誰かがこれを役立つと思うかもしれません)、電子メールに添付する画像にContent-IDヘッダーを追加して、次の方法で参照できるようにする必要があります。メッセージでインラインで使用する場合のCID。ケーキインストールの電子メールコントローラーを開き、__ attachFiles()メソッドに次の行を追加します。

$ this-> __ message [] ='Content-ID:<'。basename($ file)。'>';

次に、次のようにテンプレートに画像を追加できます。

v1.2および1.3の電子メールクラスのattachfileメソッドはパスのみを受け入れ、それ以降のバージョンの追加機能がないため、「ハック」

于 2018-03-26T05:51:01.307 に答える