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:
<?phpnamespace 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'); }}