Laravel 5.3は notifications と呼ばれる新しいサービスを導入し、単純で流暢な構文を介して(他の通知の中でも)電子メールを作成できるようにします。
_ return (new MailMessage)
->greeting('Hello!')
->line('One of your invoices has been paid!')
->action('View Invoice', $url)
->line('Thank you for using our application!');
_
電子メール通知に画像を追加するための雄弁なアプローチは何ですか?ベーステンプレートを変更するためのベンダーファイルをすでに公開しています。
私の考えは現在次のとおりです。
Illuminate\Notifications\Messages\SimpleMessage
_を、いくつかの追加メソッドを使用してSimpleMediaMessage
の行に沿って、新しいローカルクラスとして拡張します(例:->image(src, url, alt)
)->image
_を介して構築されたメディア配列をループするSimpleMediaMessage
に固有のテンプレートを作成しますこれは、電子メールの画像のような単純なものにはかなり手間がかかるようです。私は何かが足りないのですか?より良いアプローチはありますか?
わかりやすくするために編集
画像を参照するときは、メッセージ自体に表示されるバナー画像とトレイル画像を意味します(個別の添付ファイルとしてではありません)。
添付の画像は、a)現在達成できることを赤で、b)私が探していることを紫で示しています。
2回目の編集
これまでに投稿された回答、特に@Ericsを読み直すと、テンプレートを非常に簡単に変更するだけで、実際に次のことができることがわかります。
_->line("<img src='foo.example/bar.jpg' />")
_
安全でないマークアップを許可するには、テンプレートを変更する必要があります。
_// Note this is in two spots - intro + outro
{{ $line }} --> becomes --> {!! $line !!}
_
この方法のデメリット:
たとえば、メールテンプレートの外部で行わない限り、画像はインラインスタイルを利用できません。
-> line( "<img style = 'max-width:570px;/*メールで画像を正常に表示するための他のすべてのジャンク* /' src = 'foo.example.bar.jpg' />")
どのように取り付けたいですか?電子メールでは、フルパスを参照して、通常のHTML形式でビューに追加することができます。
_<img src="http://yoursite.com/path/to/image.png">
_
実際の添付ファイルにしたい場合は、MailMessageに->attach()
メソッドとattachData
メソッドの両方があります。これらは通常、PDFやドキュメントの添付ファイルなどに使用されます。
ソースで添付ファイルを添付して参照したい場合は、前述のようにクラスを拡張するか、Laravelの_Mail::send
_メソッドにフォールバックする必要があると思います。
通知システムはシンプルで意見が分かれるように設計されているため、一般的なユースケースをカバーしたいと考えており、_cid:
_ style を参照するよりも画像へのフルパスを使用する方がはるかに簡単です。