LaravelでHTMLメールに画像を埋め込む方法【embed()を使ってロゴを表示】

技術記事

Laravelでは、Mailableクラスを使ってHTMLメールを簡単に送信できます。
しかし、HTMLメール内にロゴなどの画像を表示しようとすると「リンク先がブロックされて表示されない」という問題がよく起こります。
この記事では、embed() ヘルパを使って 画像をメール本文に直接埋め込む方法 を紹介します。


サンプル構成


Mailableクラス側のコード


HTMLメール(Bladeテンプレート)


embed() の仕組み

  • $message->embed() は、メール送信時に 画像をBase64エンコードして添付 し、本文内で <img src="cid:xxxx"> として埋め込みます。
  • resource_path('mail/myservice-logo.png') のように resources/mail/ フォルダに置くと整理しやすいです。
  • 外部URLで画像を読み込むよりも安全で、受信側でのブロックを回避できます。

画像が表示されない場合のチェックポイント

  1. メールクライアントがHTMLメールをブロックしていないか
  2. ファイルパスが正しいか(resource_path() の中の階層)
  3. 画像形式(png / jpg / gif など)が一般的なものか

まとめ

Laravelのメール送信では、$message->embed() を使うことで安全かつ確実に画像を埋め込めます。
ロゴやヘッダー画像を入れると、通知メールやサインアップメールが一気にプロダクトらしく見えるようになります。


📎 実際に使える例: