如果你想在你的应用中测试邮件内容但是无法或不愿意设置类似 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 你也可以预览你的邮件。举个例子,当你创建通知的时候你可以指定你的邮件通知中可能用到的 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
方法和其他方法。
由 @raditzfarhan提供
如果您发送 Laravel
通知,并且没有在 toMail()
中指定主题,默认主题是您的通知类名,驼峰命名进入控制器。
那么,你可以:
class UserRegistrationEmail extends Notification {
//
}
然后您将收到一封主题为 用户注册的电子邮件
的电子邮件。
你不仅可以发送 Laravel
通知 给特定的用户 $user->notify()
,而且可以发送给你想发给的任何人,通过 Notification::route()
,所谓的 “按需” 通知:
Notification::route('mail', '[email protected]')
->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
方法。
由 @Philo01 提供