I have just upgraded my 5.2
install of laravel to 5.3
and then to 5.4
following the official upgrading methods.
I am now trying to use one of the new features, to create a markdown formated email.
According to the documentation found at: https://laravel.com/docs/5.4/mail#view-data
To embed an inline image, use the embed method on the
$message
variable within your email template. Laravel automatically makes the$message
variable available to all of your email templates, so you don't need to worry about passing it in manually:
However, this:
<img src="{{ $message->embed(public_path().'/img/official_logo.png') }}">
will produce the following error:
Undefined variable:
message
Am I missing something? Or is there something undocumented in the upgrading guides?
Later edit:
I am calling the email function with:
\Mail::to($user)->send(new WelcomeCandidate($user, $request->input('password')));
And WelcomeCandidate looks like:
<?php
namespace App\Mail;
use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Contracts\Queue\ShouldQueue;
use App\Models\User;
class WelcomeCandidate extends Mailable
{
use Queueable, SerializesModels;
public $user;
public $password;
/**
* Create a new message instance.
*
* @return void
*/
public function __construct(User $user, $password)
{
//
$this->user = $user;
$this->password = $password;
}
/**
* Build the message.
*
* @return $this
*/
public function build()
{
$this->subject('Welcome!');
return $this->markdown('emails.welcome-candidate');
}
}
You can also use this useful package
https://github.com/eduardokum/laravel-mail-auto-embed
Its use is very simple, you write your markdown normally:
When sending, it will replace the link that would normally be generated:
by an embedded inline attachment of the image:
It seems that the older $message->embed doesn't work nicely with Markdown emails. Like you mentioned in the comments it seems broken since 5.4
But you could just try it like this inside your markdown email:
Like shown here: https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet#images
Asset function reference: https://laravel.com/docs/5.4/helpers#method-asset
Solved my issue!
If you are in localhost , you can use public_path instead of base_path function
Try this:
or
You could try the following: