【问题标题】:How to send file with Email in Laravel Nova?如何在 Laravel Nova 中使用电子邮件发送文件?
【发布时间】:2021-12-18 10:35:39
【问题描述】:

我正在向markdown 中的多个收件人发送Newsletter Email,但我似乎无法在电子邮件中附加文件。通过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 中为它分配一个文件,但是当发送电子邮件时,它到达时没有附件。

我能做什么?

【问题讨论】:

    标签: php laravel email laravel-8 laravel-nova


    【解决方案1】:

    您必须使用附加功能才能将文件作为附件发送到电子邮件。

    你可以试试这个

    return $this->markdown('emails.newsletter')
    ->with('content', $this->content)
    ->attach(filePath, ['as' => fileName,'mime' => 'application/pdf']);
    

    文件路径将是存储文件的位置,请确保该文件夹具有读写权限。

    以上代码会将文件作为附件发送到您的电子邮件中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-09-25
      • 1970-01-01
      • 1970-01-01
      • 2019-02-12
      • 1970-01-01
      • 2015-12-20
      • 1970-01-01
      相关资源
      最近更新 更多