Not receiving the $message variable in view from a Laravel HTML Mailable (NON Markdown)
I've read several similar questions related to this problem but all refer to Markdown mailables.
I'm trying to send inline images in the mailables but I haven't found a way to do it properly (Laravel 5.5).
The documentation says this:
Inline Attachments
Embedding inline images into your emails is typically cumbersome; however, Laravel provides a convenient way to attach images to your emails and retrieving the appropriate
CID
. To embed an inline image, use theembed
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:
<body>
Here is an image:
<img src="{{ $message->embed($pathToFile) }}">
</body>
But, when doing that I receive this error:
Undefined variable: message (View: /path/to/project/resources/views/mails/new_user_welcome.blade.php)
I know that this has a limitation when using a Markdown message but I'm not using one.
This are the related files:
Mail/NewUserWelcomeEmail.php
class NewUserWelcomeEmail extends Mailable
{
use SerializesModels;
public function build()
{
return $this->view('mails.new_user_welcome');
}
}
Resources/views/mails/new_user_welcome.blade.php
@extends('layouts.mail')
@section('content')
<img src="{{ $message->embed(url("storage/images/inline_image.png")) }}"
alt="An inline image" />
@endsection
App/Http/Controllers/UserController.php
public function register(NewUserRequest $request)
{
// some code
Mail::to($user)->send(new NewUserWelcomeEmail($user));
return 'done';
}
laravel email laravel-5.5
add a comment |
I've read several similar questions related to this problem but all refer to Markdown mailables.
I'm trying to send inline images in the mailables but I haven't found a way to do it properly (Laravel 5.5).
The documentation says this:
Inline Attachments
Embedding inline images into your emails is typically cumbersome; however, Laravel provides a convenient way to attach images to your emails and retrieving the appropriate
CID
. To embed an inline image, use theembed
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:
<body>
Here is an image:
<img src="{{ $message->embed($pathToFile) }}">
</body>
But, when doing that I receive this error:
Undefined variable: message (View: /path/to/project/resources/views/mails/new_user_welcome.blade.php)
I know that this has a limitation when using a Markdown message but I'm not using one.
This are the related files:
Mail/NewUserWelcomeEmail.php
class NewUserWelcomeEmail extends Mailable
{
use SerializesModels;
public function build()
{
return $this->view('mails.new_user_welcome');
}
}
Resources/views/mails/new_user_welcome.blade.php
@extends('layouts.mail')
@section('content')
<img src="{{ $message->embed(url("storage/images/inline_image.png")) }}"
alt="An inline image" />
@endsection
App/Http/Controllers/UserController.php
public function register(NewUserRequest $request)
{
// some code
Mail::to($user)->send(new NewUserWelcomeEmail($user));
return 'done';
}
laravel email laravel-5.5
try to pass messages with contstruct.
– Ali Özen
May 9 '18 at 8:11
Hello @AliÖzen, how do I do that?
– HCK
May 9 '18 at 8:13
Perhaps it fails somewhere else, because it should work like this..
– ndberg
May 15 '18 at 6:12
add a comment |
I've read several similar questions related to this problem but all refer to Markdown mailables.
I'm trying to send inline images in the mailables but I haven't found a way to do it properly (Laravel 5.5).
The documentation says this:
Inline Attachments
Embedding inline images into your emails is typically cumbersome; however, Laravel provides a convenient way to attach images to your emails and retrieving the appropriate
CID
. To embed an inline image, use theembed
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:
<body>
Here is an image:
<img src="{{ $message->embed($pathToFile) }}">
</body>
But, when doing that I receive this error:
Undefined variable: message (View: /path/to/project/resources/views/mails/new_user_welcome.blade.php)
I know that this has a limitation when using a Markdown message but I'm not using one.
This are the related files:
Mail/NewUserWelcomeEmail.php
class NewUserWelcomeEmail extends Mailable
{
use SerializesModels;
public function build()
{
return $this->view('mails.new_user_welcome');
}
}
Resources/views/mails/new_user_welcome.blade.php
@extends('layouts.mail')
@section('content')
<img src="{{ $message->embed(url("storage/images/inline_image.png")) }}"
alt="An inline image" />
@endsection
App/Http/Controllers/UserController.php
public function register(NewUserRequest $request)
{
// some code
Mail::to($user)->send(new NewUserWelcomeEmail($user));
return 'done';
}
laravel email laravel-5.5
I've read several similar questions related to this problem but all refer to Markdown mailables.
I'm trying to send inline images in the mailables but I haven't found a way to do it properly (Laravel 5.5).
The documentation says this:
Inline Attachments
Embedding inline images into your emails is typically cumbersome; however, Laravel provides a convenient way to attach images to your emails and retrieving the appropriate
CID
. To embed an inline image, use theembed
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:
<body>
Here is an image:
<img src="{{ $message->embed($pathToFile) }}">
</body>
But, when doing that I receive this error:
Undefined variable: message (View: /path/to/project/resources/views/mails/new_user_welcome.blade.php)
I know that this has a limitation when using a Markdown message but I'm not using one.
This are the related files:
Mail/NewUserWelcomeEmail.php
class NewUserWelcomeEmail extends Mailable
{
use SerializesModels;
public function build()
{
return $this->view('mails.new_user_welcome');
}
}
Resources/views/mails/new_user_welcome.blade.php
@extends('layouts.mail')
@section('content')
<img src="{{ $message->embed(url("storage/images/inline_image.png")) }}"
alt="An inline image" />
@endsection
App/Http/Controllers/UserController.php
public function register(NewUserRequest $request)
{
// some code
Mail::to($user)->send(new NewUserWelcomeEmail($user));
return 'done';
}
laravel email laravel-5.5
laravel email laravel-5.5
edited Nov 15 '18 at 19:39
HCK
asked May 9 '18 at 8:09
HCKHCK
3,60711238
3,60711238
try to pass messages with contstruct.
– Ali Özen
May 9 '18 at 8:11
Hello @AliÖzen, how do I do that?
– HCK
May 9 '18 at 8:13
Perhaps it fails somewhere else, because it should work like this..
– ndberg
May 15 '18 at 6:12
add a comment |
try to pass messages with contstruct.
– Ali Özen
May 9 '18 at 8:11
Hello @AliÖzen, how do I do that?
– HCK
May 9 '18 at 8:13
Perhaps it fails somewhere else, because it should work like this..
– ndberg
May 15 '18 at 6:12
try to pass messages with contstruct.
– Ali Özen
May 9 '18 at 8:11
try to pass messages with contstruct.
– Ali Özen
May 9 '18 at 8:11
Hello @AliÖzen, how do I do that?
– HCK
May 9 '18 at 8:13
Hello @AliÖzen, how do I do that?
– HCK
May 9 '18 at 8:13
Perhaps it fails somewhere else, because it should work like this..
– ndberg
May 15 '18 at 6:12
Perhaps it fails somewhere else, because it should work like this..
– ndberg
May 15 '18 at 6:12
add a comment |
4 Answers
4
active
oldest
votes
Well, to be honest, I have not found a way to make this work properly. I mean, as it stands, this should work. Maybe is my Laravel installation (?)..
Anyway, I did make it work with a workaround.
1) Using Eduardokum' Laravel Mail Auto Embed package, this basically generate a CID for each of your media assets.
But after adding this package this didn't work as expected.. so I:
2) change the way I was referencing my assets, from this:
<img src="{{ url("storage/a_inline_image.png") }}" />
To this:
<img src="{{ asset("storage/a_inline_image.png") }}" />
Now it works.
for my personal reference, it would be great, to know, if it worked usingasset(...
without any additional packages?
– Bart
May 18 '18 at 23:19
2
@bart no, it didn't work. The original problem wasn't the way I referenced assets but the$message
variable. Sadly, I haven't found a way to make it worked. And yes, I try what (I assume) you are suggesting but as I said, it didn't work :/
– HCK
May 18 '18 at 23:56
thanks for update :)
– Bart
May 19 '18 at 17:47
add a comment |
if you can use like this than it can be work other wise you don't use $message variable in mail blade
Mail::send('emails.welcome', $data, function ($message) {
$message->from('us@example.com', 'Laravel');
$message->to('foo@example.com')->cc('bar@example.com');
});
if you don't want use this method than you can use like this
https://code.tutsplus.com/tutorials/how-to-send-emails-in-laravel--cms-30046
it can be work like this.
The documentations says this: "Laravel automatically makes the$message
variable available to all of your email templates" so it should be available.
– HCK
May 13 '18 at 22:52
add a comment |
In my case (Larvel 5.5), I've managed, to modify header logo, in both html and markdown.
Laravel documentation, although really great, could be better in this regard.
Anyway, follow these steps, and you should be fine...
1 - Publish mail templates via:
php artisan vendor:publish --tag=laravel-mail
so you can easily modify your mail source files.
2 - Modify message.blade.php
in resources/views/vendor/mail/html
with this:
@slot('header')
@component('mail::header', ['url' => config('app.url')])
<img src="{{asset('assets/img/pathToYourImage...')}}">
@endcomponent
@endslot
3 - All your emails should receive logo via CID from now.
Note:
In this example Laravel, automatically converts assets to CIDs, so you don't need to call $message->embed(...
at all...
Please test extensively, with these html/markdown directories and blade directives going on. It is kinda tricky, but it definitely, does its magic...
My laravel 5.5 is not changing the URL for a CID id, it's just sending the url.
– Don Viegues
Aug 10 '18 at 19:12
@DonViegues are you sure you are usingasset()
function? If that's the case.maybe you should try package suggested by HCK in this thread - Laravel Mail Auto Embed.. BTW I believe this is a bug, and I hope it was fixed in Laravel 5.6. Can you verify that?
– Bart
Aug 11 '18 at 0:43
Hi, yes, I'm using asset(), it seems that the package you said is the way to go. thanks.
– Don Viegues
Aug 16 '18 at 20:35
add a comment |
You have to define the File Path Variable in your Mailable as public property -> example $pathToFile.
If you have the file path from outside of the mailable you can pass in with the constructor.
class NewUserWelcomeEmail extends Mailable
{
use SerializesModels;
// Must be public
public $pathToFile;
/**
* Create a new message instance.
*/
public function __construct(string $pathToFile)
{
$this->pathToFile= $pathToFile;
}
public function build()
{
return $this->view('mails.new_user_welcome');
}
}
Then it works as expected in your view like this:
@extends('layouts.mail')
@section('content')
<img src="{{ $message->embed(url($pathToFile)) }}" alt="An inline image" />
@endsection
The problem is the$message
variable not the ones flagged aspublic
in theMailable
class.
– HCK
May 15 '18 at 6:06
oh I see, could have read better.
– ndberg
May 15 '18 at 6:10
Don't worry, I solved the issue with a workaround.. I'll update it tomorrow. Thanks anyway, mate.
– HCK
May 15 '18 at 6:11
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f50248498%2fnot-receiving-the-message-variable-in-view-from-a-laravel-html-mailable-non-ma%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
4 Answers
4
active
oldest
votes
4 Answers
4
active
oldest
votes
active
oldest
votes
active
oldest
votes
Well, to be honest, I have not found a way to make this work properly. I mean, as it stands, this should work. Maybe is my Laravel installation (?)..
Anyway, I did make it work with a workaround.
1) Using Eduardokum' Laravel Mail Auto Embed package, this basically generate a CID for each of your media assets.
But after adding this package this didn't work as expected.. so I:
2) change the way I was referencing my assets, from this:
<img src="{{ url("storage/a_inline_image.png") }}" />
To this:
<img src="{{ asset("storage/a_inline_image.png") }}" />
Now it works.
for my personal reference, it would be great, to know, if it worked usingasset(...
without any additional packages?
– Bart
May 18 '18 at 23:19
2
@bart no, it didn't work. The original problem wasn't the way I referenced assets but the$message
variable. Sadly, I haven't found a way to make it worked. And yes, I try what (I assume) you are suggesting but as I said, it didn't work :/
– HCK
May 18 '18 at 23:56
thanks for update :)
– Bart
May 19 '18 at 17:47
add a comment |
Well, to be honest, I have not found a way to make this work properly. I mean, as it stands, this should work. Maybe is my Laravel installation (?)..
Anyway, I did make it work with a workaround.
1) Using Eduardokum' Laravel Mail Auto Embed package, this basically generate a CID for each of your media assets.
But after adding this package this didn't work as expected.. so I:
2) change the way I was referencing my assets, from this:
<img src="{{ url("storage/a_inline_image.png") }}" />
To this:
<img src="{{ asset("storage/a_inline_image.png") }}" />
Now it works.
for my personal reference, it would be great, to know, if it worked usingasset(...
without any additional packages?
– Bart
May 18 '18 at 23:19
2
@bart no, it didn't work. The original problem wasn't the way I referenced assets but the$message
variable. Sadly, I haven't found a way to make it worked. And yes, I try what (I assume) you are suggesting but as I said, it didn't work :/
– HCK
May 18 '18 at 23:56
thanks for update :)
– Bart
May 19 '18 at 17:47
add a comment |
Well, to be honest, I have not found a way to make this work properly. I mean, as it stands, this should work. Maybe is my Laravel installation (?)..
Anyway, I did make it work with a workaround.
1) Using Eduardokum' Laravel Mail Auto Embed package, this basically generate a CID for each of your media assets.
But after adding this package this didn't work as expected.. so I:
2) change the way I was referencing my assets, from this:
<img src="{{ url("storage/a_inline_image.png") }}" />
To this:
<img src="{{ asset("storage/a_inline_image.png") }}" />
Now it works.
Well, to be honest, I have not found a way to make this work properly. I mean, as it stands, this should work. Maybe is my Laravel installation (?)..
Anyway, I did make it work with a workaround.
1) Using Eduardokum' Laravel Mail Auto Embed package, this basically generate a CID for each of your media assets.
But after adding this package this didn't work as expected.. so I:
2) change the way I was referencing my assets, from this:
<img src="{{ url("storage/a_inline_image.png") }}" />
To this:
<img src="{{ asset("storage/a_inline_image.png") }}" />
Now it works.
answered May 17 '18 at 20:10
HCKHCK
3,60711238
3,60711238
for my personal reference, it would be great, to know, if it worked usingasset(...
without any additional packages?
– Bart
May 18 '18 at 23:19
2
@bart no, it didn't work. The original problem wasn't the way I referenced assets but the$message
variable. Sadly, I haven't found a way to make it worked. And yes, I try what (I assume) you are suggesting but as I said, it didn't work :/
– HCK
May 18 '18 at 23:56
thanks for update :)
– Bart
May 19 '18 at 17:47
add a comment |
for my personal reference, it would be great, to know, if it worked usingasset(...
without any additional packages?
– Bart
May 18 '18 at 23:19
2
@bart no, it didn't work. The original problem wasn't the way I referenced assets but the$message
variable. Sadly, I haven't found a way to make it worked. And yes, I try what (I assume) you are suggesting but as I said, it didn't work :/
– HCK
May 18 '18 at 23:56
thanks for update :)
– Bart
May 19 '18 at 17:47
for my personal reference, it would be great, to know, if it worked using
asset(...
without any additional packages?– Bart
May 18 '18 at 23:19
for my personal reference, it would be great, to know, if it worked using
asset(...
without any additional packages?– Bart
May 18 '18 at 23:19
2
2
@bart no, it didn't work. The original problem wasn't the way I referenced assets but the
$message
variable. Sadly, I haven't found a way to make it worked. And yes, I try what (I assume) you are suggesting but as I said, it didn't work :/– HCK
May 18 '18 at 23:56
@bart no, it didn't work. The original problem wasn't the way I referenced assets but the
$message
variable. Sadly, I haven't found a way to make it worked. And yes, I try what (I assume) you are suggesting but as I said, it didn't work :/– HCK
May 18 '18 at 23:56
thanks for update :)
– Bart
May 19 '18 at 17:47
thanks for update :)
– Bart
May 19 '18 at 17:47
add a comment |
if you can use like this than it can be work other wise you don't use $message variable in mail blade
Mail::send('emails.welcome', $data, function ($message) {
$message->from('us@example.com', 'Laravel');
$message->to('foo@example.com')->cc('bar@example.com');
});
if you don't want use this method than you can use like this
https://code.tutsplus.com/tutorials/how-to-send-emails-in-laravel--cms-30046
it can be work like this.
The documentations says this: "Laravel automatically makes the$message
variable available to all of your email templates" so it should be available.
– HCK
May 13 '18 at 22:52
add a comment |
if you can use like this than it can be work other wise you don't use $message variable in mail blade
Mail::send('emails.welcome', $data, function ($message) {
$message->from('us@example.com', 'Laravel');
$message->to('foo@example.com')->cc('bar@example.com');
});
if you don't want use this method than you can use like this
https://code.tutsplus.com/tutorials/how-to-send-emails-in-laravel--cms-30046
it can be work like this.
The documentations says this: "Laravel automatically makes the$message
variable available to all of your email templates" so it should be available.
– HCK
May 13 '18 at 22:52
add a comment |
if you can use like this than it can be work other wise you don't use $message variable in mail blade
Mail::send('emails.welcome', $data, function ($message) {
$message->from('us@example.com', 'Laravel');
$message->to('foo@example.com')->cc('bar@example.com');
});
if you don't want use this method than you can use like this
https://code.tutsplus.com/tutorials/how-to-send-emails-in-laravel--cms-30046
it can be work like this.
if you can use like this than it can be work other wise you don't use $message variable in mail blade
Mail::send('emails.welcome', $data, function ($message) {
$message->from('us@example.com', 'Laravel');
$message->to('foo@example.com')->cc('bar@example.com');
});
if you don't want use this method than you can use like this
https://code.tutsplus.com/tutorials/how-to-send-emails-in-laravel--cms-30046
it can be work like this.
edited Oct 29 '18 at 19:41
HCK
3,60711238
3,60711238
answered May 13 '18 at 11:33
Keval MangukiyaKeval Mangukiya
1871313
1871313
The documentations says this: "Laravel automatically makes the$message
variable available to all of your email templates" so it should be available.
– HCK
May 13 '18 at 22:52
add a comment |
The documentations says this: "Laravel automatically makes the$message
variable available to all of your email templates" so it should be available.
– HCK
May 13 '18 at 22:52
The documentations says this: "Laravel automatically makes the
$message
variable available to all of your email templates" so it should be available.– HCK
May 13 '18 at 22:52
The documentations says this: "Laravel automatically makes the
$message
variable available to all of your email templates" so it should be available.– HCK
May 13 '18 at 22:52
add a comment |
In my case (Larvel 5.5), I've managed, to modify header logo, in both html and markdown.
Laravel documentation, although really great, could be better in this regard.
Anyway, follow these steps, and you should be fine...
1 - Publish mail templates via:
php artisan vendor:publish --tag=laravel-mail
so you can easily modify your mail source files.
2 - Modify message.blade.php
in resources/views/vendor/mail/html
with this:
@slot('header')
@component('mail::header', ['url' => config('app.url')])
<img src="{{asset('assets/img/pathToYourImage...')}}">
@endcomponent
@endslot
3 - All your emails should receive logo via CID from now.
Note:
In this example Laravel, automatically converts assets to CIDs, so you don't need to call $message->embed(...
at all...
Please test extensively, with these html/markdown directories and blade directives going on. It is kinda tricky, but it definitely, does its magic...
My laravel 5.5 is not changing the URL for a CID id, it's just sending the url.
– Don Viegues
Aug 10 '18 at 19:12
@DonViegues are you sure you are usingasset()
function? If that's the case.maybe you should try package suggested by HCK in this thread - Laravel Mail Auto Embed.. BTW I believe this is a bug, and I hope it was fixed in Laravel 5.6. Can you verify that?
– Bart
Aug 11 '18 at 0:43
Hi, yes, I'm using asset(), it seems that the package you said is the way to go. thanks.
– Don Viegues
Aug 16 '18 at 20:35
add a comment |
In my case (Larvel 5.5), I've managed, to modify header logo, in both html and markdown.
Laravel documentation, although really great, could be better in this regard.
Anyway, follow these steps, and you should be fine...
1 - Publish mail templates via:
php artisan vendor:publish --tag=laravel-mail
so you can easily modify your mail source files.
2 - Modify message.blade.php
in resources/views/vendor/mail/html
with this:
@slot('header')
@component('mail::header', ['url' => config('app.url')])
<img src="{{asset('assets/img/pathToYourImage...')}}">
@endcomponent
@endslot
3 - All your emails should receive logo via CID from now.
Note:
In this example Laravel, automatically converts assets to CIDs, so you don't need to call $message->embed(...
at all...
Please test extensively, with these html/markdown directories and blade directives going on. It is kinda tricky, but it definitely, does its magic...
My laravel 5.5 is not changing the URL for a CID id, it's just sending the url.
– Don Viegues
Aug 10 '18 at 19:12
@DonViegues are you sure you are usingasset()
function? If that's the case.maybe you should try package suggested by HCK in this thread - Laravel Mail Auto Embed.. BTW I believe this is a bug, and I hope it was fixed in Laravel 5.6. Can you verify that?
– Bart
Aug 11 '18 at 0:43
Hi, yes, I'm using asset(), it seems that the package you said is the way to go. thanks.
– Don Viegues
Aug 16 '18 at 20:35
add a comment |
In my case (Larvel 5.5), I've managed, to modify header logo, in both html and markdown.
Laravel documentation, although really great, could be better in this regard.
Anyway, follow these steps, and you should be fine...
1 - Publish mail templates via:
php artisan vendor:publish --tag=laravel-mail
so you can easily modify your mail source files.
2 - Modify message.blade.php
in resources/views/vendor/mail/html
with this:
@slot('header')
@component('mail::header', ['url' => config('app.url')])
<img src="{{asset('assets/img/pathToYourImage...')}}">
@endcomponent
@endslot
3 - All your emails should receive logo via CID from now.
Note:
In this example Laravel, automatically converts assets to CIDs, so you don't need to call $message->embed(...
at all...
Please test extensively, with these html/markdown directories and blade directives going on. It is kinda tricky, but it definitely, does its magic...
In my case (Larvel 5.5), I've managed, to modify header logo, in both html and markdown.
Laravel documentation, although really great, could be better in this regard.
Anyway, follow these steps, and you should be fine...
1 - Publish mail templates via:
php artisan vendor:publish --tag=laravel-mail
so you can easily modify your mail source files.
2 - Modify message.blade.php
in resources/views/vendor/mail/html
with this:
@slot('header')
@component('mail::header', ['url' => config('app.url')])
<img src="{{asset('assets/img/pathToYourImage...')}}">
@endcomponent
@endslot
3 - All your emails should receive logo via CID from now.
Note:
In this example Laravel, automatically converts assets to CIDs, so you don't need to call $message->embed(...
at all...
Please test extensively, with these html/markdown directories and blade directives going on. It is kinda tricky, but it definitely, does its magic...
edited Oct 29 '18 at 19:42
HCK
3,60711238
3,60711238
answered May 13 '18 at 23:22
BartBart
984622
984622
My laravel 5.5 is not changing the URL for a CID id, it's just sending the url.
– Don Viegues
Aug 10 '18 at 19:12
@DonViegues are you sure you are usingasset()
function? If that's the case.maybe you should try package suggested by HCK in this thread - Laravel Mail Auto Embed.. BTW I believe this is a bug, and I hope it was fixed in Laravel 5.6. Can you verify that?
– Bart
Aug 11 '18 at 0:43
Hi, yes, I'm using asset(), it seems that the package you said is the way to go. thanks.
– Don Viegues
Aug 16 '18 at 20:35
add a comment |
My laravel 5.5 is not changing the URL for a CID id, it's just sending the url.
– Don Viegues
Aug 10 '18 at 19:12
@DonViegues are you sure you are usingasset()
function? If that's the case.maybe you should try package suggested by HCK in this thread - Laravel Mail Auto Embed.. BTW I believe this is a bug, and I hope it was fixed in Laravel 5.6. Can you verify that?
– Bart
Aug 11 '18 at 0:43
Hi, yes, I'm using asset(), it seems that the package you said is the way to go. thanks.
– Don Viegues
Aug 16 '18 at 20:35
My laravel 5.5 is not changing the URL for a CID id, it's just sending the url.
– Don Viegues
Aug 10 '18 at 19:12
My laravel 5.5 is not changing the URL for a CID id, it's just sending the url.
– Don Viegues
Aug 10 '18 at 19:12
@DonViegues are you sure you are using
asset()
function? If that's the case.maybe you should try package suggested by HCK in this thread - Laravel Mail Auto Embed.. BTW I believe this is a bug, and I hope it was fixed in Laravel 5.6. Can you verify that?– Bart
Aug 11 '18 at 0:43
@DonViegues are you sure you are using
asset()
function? If that's the case.maybe you should try package suggested by HCK in this thread - Laravel Mail Auto Embed.. BTW I believe this is a bug, and I hope it was fixed in Laravel 5.6. Can you verify that?– Bart
Aug 11 '18 at 0:43
Hi, yes, I'm using asset(), it seems that the package you said is the way to go. thanks.
– Don Viegues
Aug 16 '18 at 20:35
Hi, yes, I'm using asset(), it seems that the package you said is the way to go. thanks.
– Don Viegues
Aug 16 '18 at 20:35
add a comment |
You have to define the File Path Variable in your Mailable as public property -> example $pathToFile.
If you have the file path from outside of the mailable you can pass in with the constructor.
class NewUserWelcomeEmail extends Mailable
{
use SerializesModels;
// Must be public
public $pathToFile;
/**
* Create a new message instance.
*/
public function __construct(string $pathToFile)
{
$this->pathToFile= $pathToFile;
}
public function build()
{
return $this->view('mails.new_user_welcome');
}
}
Then it works as expected in your view like this:
@extends('layouts.mail')
@section('content')
<img src="{{ $message->embed(url($pathToFile)) }}" alt="An inline image" />
@endsection
The problem is the$message
variable not the ones flagged aspublic
in theMailable
class.
– HCK
May 15 '18 at 6:06
oh I see, could have read better.
– ndberg
May 15 '18 at 6:10
Don't worry, I solved the issue with a workaround.. I'll update it tomorrow. Thanks anyway, mate.
– HCK
May 15 '18 at 6:11
add a comment |
You have to define the File Path Variable in your Mailable as public property -> example $pathToFile.
If you have the file path from outside of the mailable you can pass in with the constructor.
class NewUserWelcomeEmail extends Mailable
{
use SerializesModels;
// Must be public
public $pathToFile;
/**
* Create a new message instance.
*/
public function __construct(string $pathToFile)
{
$this->pathToFile= $pathToFile;
}
public function build()
{
return $this->view('mails.new_user_welcome');
}
}
Then it works as expected in your view like this:
@extends('layouts.mail')
@section('content')
<img src="{{ $message->embed(url($pathToFile)) }}" alt="An inline image" />
@endsection
The problem is the$message
variable not the ones flagged aspublic
in theMailable
class.
– HCK
May 15 '18 at 6:06
oh I see, could have read better.
– ndberg
May 15 '18 at 6:10
Don't worry, I solved the issue with a workaround.. I'll update it tomorrow. Thanks anyway, mate.
– HCK
May 15 '18 at 6:11
add a comment |
You have to define the File Path Variable in your Mailable as public property -> example $pathToFile.
If you have the file path from outside of the mailable you can pass in with the constructor.
class NewUserWelcomeEmail extends Mailable
{
use SerializesModels;
// Must be public
public $pathToFile;
/**
* Create a new message instance.
*/
public function __construct(string $pathToFile)
{
$this->pathToFile= $pathToFile;
}
public function build()
{
return $this->view('mails.new_user_welcome');
}
}
Then it works as expected in your view like this:
@extends('layouts.mail')
@section('content')
<img src="{{ $message->embed(url($pathToFile)) }}" alt="An inline image" />
@endsection
You have to define the File Path Variable in your Mailable as public property -> example $pathToFile.
If you have the file path from outside of the mailable you can pass in with the constructor.
class NewUserWelcomeEmail extends Mailable
{
use SerializesModels;
// Must be public
public $pathToFile;
/**
* Create a new message instance.
*/
public function __construct(string $pathToFile)
{
$this->pathToFile= $pathToFile;
}
public function build()
{
return $this->view('mails.new_user_welcome');
}
}
Then it works as expected in your view like this:
@extends('layouts.mail')
@section('content')
<img src="{{ $message->embed(url($pathToFile)) }}" alt="An inline image" />
@endsection
edited Oct 29 '18 at 19:43
HCK
3,60711238
3,60711238
answered May 15 '18 at 6:04
ndbergndberg
373212
373212
The problem is the$message
variable not the ones flagged aspublic
in theMailable
class.
– HCK
May 15 '18 at 6:06
oh I see, could have read better.
– ndberg
May 15 '18 at 6:10
Don't worry, I solved the issue with a workaround.. I'll update it tomorrow. Thanks anyway, mate.
– HCK
May 15 '18 at 6:11
add a comment |
The problem is the$message
variable not the ones flagged aspublic
in theMailable
class.
– HCK
May 15 '18 at 6:06
oh I see, could have read better.
– ndberg
May 15 '18 at 6:10
Don't worry, I solved the issue with a workaround.. I'll update it tomorrow. Thanks anyway, mate.
– HCK
May 15 '18 at 6:11
The problem is the
$message
variable not the ones flagged as public
in the Mailable
class.– HCK
May 15 '18 at 6:06
The problem is the
$message
variable not the ones flagged as public
in the Mailable
class.– HCK
May 15 '18 at 6:06
oh I see, could have read better.
– ndberg
May 15 '18 at 6:10
oh I see, could have read better.
– ndberg
May 15 '18 at 6:10
Don't worry, I solved the issue with a workaround.. I'll update it tomorrow. Thanks anyway, mate.
– HCK
May 15 '18 at 6:11
Don't worry, I solved the issue with a workaround.. I'll update it tomorrow. Thanks anyway, mate.
– HCK
May 15 '18 at 6:11
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f50248498%2fnot-receiving-the-message-variable-in-view-from-a-laravel-html-mailable-non-ma%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
try to pass messages with contstruct.
– Ali Özen
May 9 '18 at 8:11
Hello @AliÖzen, how do I do that?
– HCK
May 9 '18 at 8:13
Perhaps it fails somewhere else, because it should work like this..
– ndberg
May 15 '18 at 6:12