php - 如何在 Laravel Nova 中使用电子邮件发送文件?
问题描述
我正在向Newsletter Email
多个收件人发送邮件,markdown
但我似乎无法将文件附加到电子邮件中。发送是通过一个触发的action
:
Resource
:
public function fields(Request $request)
{
return [
ID::make(__('ID'), 'id')->sortable(),
Date::make('Created', 'created_at'),
Markdown::make('Message', 'content')->alwaysShow(),
File::make('File')->disk('public')
];
}
public function actions(Request $request)
{
return [
Actions\NewsletterMail::make()->standalone()
];
}
Action
触发控制器功能send
:
public function handle(ActionFields $fields, Collection $models)
{
app(NewsletterMailController::class)->send();
}
Controller
获取所有收件人的电子邮件并发送给mailable
他们:
public function send()
{
$emails = DB::select('select * from newsletter_recipients order by id desc');
foreach ($emails as $email) {
Mail::to($email)->send(new NewsletterMail());
}
}
Mailable
获取电流newsletter email
并将其返回为markdown
:
public function build()
{
$this->content = DB::select('select * from newsletter_mails order by id desc limit 1')[0]->content;
return $this->markdown('emails.newsletter')->with('content', $this->content);
}
如您所见,resource
有一个file field
. 我可以在其中为它分配一个文件,nova dashboard
但是当发送电子邮件时,它到达时没有附件。
有什么我能做的吗?
解决方案
您必须使用附加功能才能将文件作为附件发送到电子邮件。
你可以试试这个
return $this->markdown('emails.newsletter')
->with('content', $this->content)
->attach(filePath, ['as' => fileName,'mime' => 'application/pdf']);
文件路径将是存储文件的位置,请确保该文件夹具有读写访问权限。
以上代码将文件作为附件发送到您的电子邮件中。
推荐阅读
- angular - 使用 Angular Material Table Exporter 导出分页垫表
- c# - WPF - 将文本框文本设置为下拉菜单的值
- random - 是否可以选择在 VBScript 中将两个整数相邻放置?
- powerbi - 无聚合的 Pivot-Power BI
- vulkan - 在 GLSL 中使用多个描述符集而没有明确的“集合”存储?
- c# - 如何在 C# 中获取 JITed 代码的地址?
- java - 如何使用Java将文本附加到一个目录中的多个文件
- java - Socket 到 Socket 通信,Server 仅充当中间人
- ruby-on-rails - 如何在activerecord中切换两个表
- javascript - 创建一个接收整数并以螺旋格式返回 NxN 二维数组的函数