⬆️ Meńu principal ⬅️ Anterior (Auth) ➡️ Siguiente (Artisan)
- Testing email into laravel.log
- You don’t have to store files to use them as email attachments in Laravel
- Preview Mailables
- Preview Mail without Mailables
- Default Email Subject in Laravel Notifications
- Send Notifications to Anyone
- Set conditional object properties
Si necesitas testear/probar el contenido de los emails en tu aplicación pero no quieres configurar los servicios como Maligun, Mailtrap, etc. Solo necesitas colocar en el .env MAIL_DRIVER=log
para que todos los emails sean guaradados en storage/logs/laravel.log
, en vez de enviarlo.
Simplemente usa el método attachData
para añadir archivos a Emails.
Te presentamos el siguiente ejemplo usnado la class Mailable.
public function build()
{
return $this->subject('Inquiry')
->to('[email protected]')
->markdown('email.inquiry')
->attachData(
$this->file,
$this->file->getClientOriginalName(),
);
}
⭐ Aportación de @ecrmnn
Si tu usas Mailables para enviar emails, puedes previsualizar el resultado sin enviarlos a algun servicio, mandandolos al navegador. Para esto necesitas retornar el email como resultado.
Route::get('/mailable', function () {
$invoice = App\Invoice::find(1);
return new App\Mail\InvoicePaid($invoice);
});
También puedes previsualizar tu correo electrónico sin Mailables. Por ejemplo, al crear una notificación, puedes especificar el formato markdown que se utilizará para tu notificación por correo electrónico.
use Illuminate\Notifications\Messages\MailMessage;
Route::get('/mailable', function () {
$invoice = App\Invoice::find(1);
return (new MailMessage)->markdown('emails.invoice-paid', compact('invoice'));
});
De hecho puedes usar otros métodos provistos por el objeto MailSessage
como view
y otros.
⭐ Aportación de @raditzfarhan
Si necesitas enviar Laravel notificaciones y omites especificar el parametro toMail()
, por defecto el asunto(subject) será el nombre de la clase.
Por ejemplo tienes:
class UserRegistrationEmail extends Notification {
//
}
Entonces recivirás un email con el aunto User Registration Email.
También puedes enviar Laravel Notificaciones no solo a ciertos usuarios sino notificar a cualquiera que necesites con el método Notification::route()
con las notificaciones "on-demand":
Notification::route('mail', '[email protected]')
->route('nexmo', '5555555555')
->route('slack', 'https://hooks.slack.com/services/...')
->notify(new InvoicePaid($invoice));
Puedes usar el método when()
o unless()
en tus notificaciones MailMessage para colocar propiedades de manera condicionales.
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');
}
}
Usa los métodos when()
o unless()
en tus propias clases usando el Trait Illuminate\Support\Traits\Conditionable
.
⭐ Aportación de @Philo01