我需要获取Mailable类的html
$mail->html = (new InactivityReminder())->"do something to output the html"
似乎没有toHtml方法或类似的东西。
可邮寄:
class InactivityReminder extends Mailable
{
use Queueable, SerializesModels;
public function __construct()
{
}
public function build()
{
return $this->markdown('mail.it.inactivityReminder');
}
}
答案 0 :(得分:1)
在5.5中,render()
方法将呈现您在Mailable
中返回的视图:
$html = (new InactivityReminder)->render()
答案 1 :(得分:0)
接口不提供该功能。这意味着在将来更新Laravel时,依赖它会导致问题。如果这不是您的问题,您可以使用返回View对象的render()
方法,然后在其上调用render()
。
所以:
(new InactivityReminder)->render()->render()
或者:
(string) (new InactivityReminder)->render()
在View上__toString()
将调用它的渲染方法。
答案 2 :(得分:0)
对于Laravel中完全可自定义的邮件,我最好使用Mailables而不是Notifiables。这是对我有用的东西:
可邮寄类:
use Illuminate\Mail\Mailable;
class MyMail extends Mailable
{
public function __construct($someData) {
$this->someData = $someData;
}
public function build() {
return $this->markdown('mail/my-mail-view')
->with([
"someData" => $this->someData
]);
}
}
邮件视图(资源/视图/邮件/my-mail-view.blade.php):
@extends('mail/mail-layout')
@section('content')
<p>Hi {{ $someData->first_name }}</p>
@endsection
邮件布局(资源/视图/邮件/mail-layout.blade.php):
<div class="myMailBody">
@yield('content')
</div>
邮件CSS文件(资源/视图/供应商/邮件/ html /主题/default.css): (假设您已经运行过“ php artisan vendor:publish --tag = laravel-mail”)
.myMailBody {
// css styles here
}
控制器中的代码
$previewMailHtml = (string) (new \Illuminate\Mail\Markdown(view(), config('mail.markdown')))->render('mail/my-mail-view', [
"someData" => $someData
]);