2012-04-25 10 views
0

メールテンプレート用のページを作成し、プレビューテンプレート用のボタンも設定しました。cakephpで電子メールに会社ロゴを追加するにはどうすればいいですか?

私のような私のローカルマシンから画像のパスを設定している

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

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

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

誰でも問題の可能性があると教えてもらえますか、またはMIMEタイプのようなものがありませんか?あなたのローカルマシン上でテストしたときに、そのパスで結構ですので、おそらくです

おかげで、

答えて

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

+0

コアCakeEmailクラスは、埋め込み画像をhtmlメールで扱うこともできます – mark

0

。しかし、自分宛てに電子メールを送ると(gmailと言うと)、ブラウザはおそらくhttp://mail.google.com/gmail/projectname/app/webroot/img/logo.JPGのような画像を探してそこの画像を見つけられません。 画像ソースをhttp://localhost/projectname/app/webroot/img/logo.JPGのように設定する必要があります。

1

電子メールの中で、あなたの完全なパスではなく相対パスを使用する必要があります。このようなHTML HelperFULL_BASE_URL定数::CakePHPの中で簡単にこれを行うには、使用

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

(明らかにこれは1行で行うことができますが、私はStackOverflowの上で読みやすさのためにそれを壊した)

0

電子メールクライアントにはイメージへの絶対パスが必要です。 HTMLヘルパーを使用した場合/projectname/app/webroot/img/が必要とされていないことを

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

注:フルベースを接続するためにHTMLヘルパーを使用します。

+0

これは、ホスト名/プロトコルのない相対パスをエコーし​​て動作しません。 –

関連する問題