Laravel 编码技巧
GitHub
  • 简介
  • 数据库模型与 Eloquent
  • 模型关联
  • 数据库迁移
  • 视图
  • 路由
  • 验证
  • 集合
  • 授权
  • 邮件
  • Artisan
  • 工厂
  • 日志与调试
  • API
  • 其他
由 GitBook 提供支持
在本页
  • 测试邮件存入 laravel.log
  • 预览邮件
  • 不使用 Mailables 预览邮件
  • Laravel 通知中的默认邮件主题
  • 向任何人发送通知
  • 设置条件对象的属性

这有帮助吗?

在GitHub上编辑

邮件

测试邮件存入 laravel.log

如果你想在你的应用中测试邮件内容但是无法或不愿意设置类似 Mailgun 的东西,使用 .env 参数 MAIL_DRIVER=log 然后所有的邮件都会被保存到 storage/logs/laravel.log 文件,而不是真实的发送。

预览邮件

如果你使用 Mailables 发送邮件,您可以在浏览器中预览结果,而无需发送。返回一个 Mailables 作为路由结果:

Route::get('/mailable', function () {
    $invoice = App\Invoice::find(1);
    return new App\Mail\InvoicePaid($invoice);
});

不使用 Mailables 预览邮件

不使用 Mailables 你也可以预览你的邮件。举个例子,当你创建通知的时候你可以指定你的邮件通知中可能用到的 markdown 文件。

use Illuminate\Notifications\Messages\MailMessage;
Route::get('/mailable', function () {
    $invoice = App\Invoice::find(1);
    return (new MailMessage)->markdown('emails.invoice-paid', compact('invoice'));
});

你也可以使用 MailMessage 对象提供的 view 方法和其他方法。

Laravel 通知中的默认邮件主题

如果您发送 Laravel 通知,并且没有在 toMail() 中指定主题,默认主题是您的通知类名,驼峰命名进入控制器。 那么,你可以:

class UserRegistrationEmail extends Notification {
    //
}

然后您将收到一封主题为 用户注册的电子邮件 的电子邮件。

向任何人发送通知

你不仅可以发送 Laravel 通知 给特定的用户 $user->notify(),而且可以发送给你想发给的任何人,通过 Notification::route() ,所谓的 “按需” 通知:

Notification::route('mail', 'taylor@example.com')
        ->route('nexmo', '5555555555')
        ->route('slack', 'https://hooks.slack.com/services/...')
        ->notify(new InvoicePaid($invoice));

设置条件对象的属性

可以在 MailMessage 通知中使用 when() 或 unless() 方法来设置条件对象属性。

class InvoicePaid extends Notification
{
    public function toMail(User $user)
    {
        return (new MailMessage)
            ->success()
            ->line('We've received your payment)
            ->when($user->isOnMonthlyPaymentPlan(), function (MailMessage $message) {
                $message->action('Save 20% by paying yearly', route('account.billing'));
            })
            ->line('Thank you for using Unlock.sh');
    }
}

通过加载 Illuminate\Support\Traits\Conditionable trait,在你自己的类中使用 when 或 unless 方法。

上一页授权下一页Artisan

最后更新于3年前

这有帮助吗?

由 提供

由 提供

@raditzfarhan
@Philo01