我刚刚升级了我的5.2
安装的laravel到5.3
,然后到5.4
以下的官方升级方法。
我现在正在尝试使用其中一个新功能,创建一个markdown格式的电子邮件。
根据以下文件:https://laravel.com/docs/5.4/mail#view-data
要嵌入内联图像,请在电子邮件模板中的$message
变量上使用embed方法。Laravel会自动将$message
变量提供给所有电子邮件模板,因此您无需担心手动传递它:
然而,这:
<img src="{{ $message->embed(public_path().'/img/official_logo.png') }}">
将产生以下错误:
未定义变量:message
我错过了什么吗?或者升级指南中没有记录的东西?
后期编辑:
我正在调用电子邮件功能:\Mail::to($user)->send(new WelcomeCandidate($user, $request->input('password')));
WelcomeCandidate看起来像:
<?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');
}
}
9条答案
按热度按时间63lcw9qa1#
您可以尝试以下操作:
6ljaweal2#
下面的解决方案适合我。
在
.env
文件中。本地:
APP_URL=http://localhost/project_name
生产用:
APP_URL=https://www.example.com
参考:https://laravel.com/docs/7.x/mail#inline-attachments
mkh04yzy3#
Laravel在所有的laravel版本中都支持embed方法,7,8,9和10。如何在laravel中嵌入图像?
Laravel会自动将$message变量提供给你所有的邮件模板,所以你不需要担心手动传递它:
r8uurelv4#
在后端,我创建了显示图像的端点。并将我需要的图像放在resource/img中。Laravel代码如下:
然后在我的html电子邮件模板中,我创建了带有background-image的div。
对我很有效。
abithluo5#
旧的$message-〉embed似乎不能很好地处理Markdown邮件。Like you mentioned in the comments it seems broken since 5.4
但是你可以在你的markdown电子邮件中这样尝试:
如图所示:https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet#images
资产功能参考:https://laravel.com/docs/5.4/helpers#method-asset
ttcibm8c6#
试试这个:
或
nuypyhwy7#
解决了我的问题!
如果在localhost中,可以使用public_path代替base_path函数
8hhllhi28#
您也可以使用这个有用的包
https://github.com/eduardokum/laravel-mail-auto-embed
摘自自述文件
它的使用非常简单,你可以正常地写你的markdown:
发送时,它将替换通常生成的链接:
通过图像的嵌入式内联附件:
vd8tlhqk9#
我遇到了同样的问题,并找到了解决方案。
在渲染图像之前,您必须使用以下命令创建从“public/storage”到“storage/app/public”的符号链接:
在“storage/app/public”中,你应该有一个文件夹“images”现在你可以在你的markdown.blade.php中呈现这段代码:
第二个选项类似:
都很好用