CONTATTACI

Guide per aspiranti programmatori

Lezione 26 / 30

Invio email in Laravel

L’invio di email in una applicazione Laravel è realizzato in modo semplice e flessibile e sfrutta tre concetti base: i mailer, i mailable, e la facade Mail.

Ognuno dei tre si occupa di un diverso aspetto del ciclo di vita dell’invio di un messaggio di posta elettronica. I mailer sono le configurazioni dei servizi di invio email (locali o remoti) che può usare l’applicazione. I mailable sono speciali classi che rappresentano un modello di email da inviare. La facade Mail, infine, è il punto d’accesso per chiedere l’effettivo invio di un mailable attraverso un mailer.

Configurazione dei mailer in Laravel

La configurazione dei mailer in Laravel si trova nel file config/mail.php. È possibile definire diversi mailer, ognuno caratterizzato da un nome e da un transport driver

In questo modo, Laravel consente all’applicazione non solo di configurare il server di posta disponibile, ma di utilizzare diversi server o servizi di emailing per inviare determinati messaggi di posta elettronica. Questa possibilità è molto importante per applicazioni che si trovano a dover inviare sia email transazionali (quelle che partono in risposta a una specifica richiesta dell’utente e che è necessario che vengano consegnate quanto prima, come per esempio quelle con i codici per cambiare password o la conferma di un ordine) che email bulk (newsletter e altri invii di marketing, che possono viaggare su canali più lenti).

È possibile configurare il mailer predefinito e dei mailer di failover, nel caso in cui qualcuno degli altri presenti problemi.

Creare un mailable in Laravel

Un mailable è una classe PHP che rappresenta uno specifico tipo di email inviata dalla propria applicazione. È possibile creare una nuova classe mailable tramite il comando Artisan make.

$ php artisan make:mail OrderShipped

INFO  Mail [app/Mail/OrderShipped.php] created successfully.

La configurazione di un mailable avviene attraverso i tre metodi envelope, content e attachments, che si occupano rispettivamente di definire le intestazioni, il corpo del messaggio e gli eventuali allegati.

class OrderShipped extends Mailable
{
  use Queueable, SerializesModels;

  public Order $order;

  public function __construct(Order $order)
  {
    $this->order = $order;
  }

  public function envelope()
  {
    return new Envelope(
      from: new Address('noreply@example.com', 'ExampleDotCom'),
      subject: 'Order Shipped',
    );
  }

  public function content()
  {
    return new Content(
      view: 'emails.orders.shipped',
      text: 'emails.orders.shipped-text'
    );
  }

  public function attachments()
  {
    $code = $this->order->code;

    return [
      Attachment::fromPath("/path/to/order-$code.pdf"),
    ];
  }
}

Il rendering del contenuto dell’email è, ovviamente, affidato a opportuni template Blade. È possibile recuperare i dati da utilizzare per il rendering della singola email utilizzando le property pubbliche definite dalla classe mailable.

<div>
  Code: {{ $order->code }}
  Address: {{ $order->address }}
  ...
</div>

Invio delle email in Laravel

L’invio effettivo di una email avviene tramite la facade Mail e il suo metodo to.

use App\Model\Order

class OrderShipmentController extends Controller
{


  public function ship(Order $order)
  {
    $order = Order::findOrFail($order);

    // do stuff to actually start shipping the order

    $recipient = auth()->user();
    Mail::to($recipient)->send(new OrderShipped($order));
  }
}

Il destinatario della email può essere passato come stringa di indirizzo email oppure tramite un oggetto o collezione di oggetti che abbiano le proprietà name ed email.

L’email effettiva da mandare è indicata tramite un mailable, a cui vengono passate le property necessarie per fare il rendering del template Blade associato agli opportuni contenuti.

La facade Mail offre diversi metodi chainable che permettono di definire più nel dettaglio l’esatto invio che si vuole effettuare, sia per quanto riguarda i destinatari (con i metodi cc e bcc) che i tempi e le modalità di invio (queue o later)

Contattaci senza impegno per informazioni sul corso

Pagamento rateale

Valore della rata: A PARTIRE DA 115 €/mese.

Esempio di finanziamento 

Importo finanziato: € 2440 in 24 rate da € 115 – TAN fisso 9,55% TAEG 12,57% – importo totale del credito € 2841.

Il costo totale del credito comprende: interessi calcolati al TAN indicato, oneri fiscali (imposta di bollo sul contratto 16,00 euro*) addebitati sulla prima rata, costo mensile di gestione pratica € 3,90, spesa di istruttoria € 0,00, spesa per invio rendicontazione periodica cartacea € 0,98 (o spesa per invio rendicontazione periodica cartacea € 0,00), imposta di bollo su rendicontazione periodica € 0,00. Modalità di rimborso obbligatoria: addebito diretto su c/c. La scadenza delle rate è determinata dal giorno della liquidazione del contratto; la data di scadenza delle rate è prevista il giorno 15 del mese. L’importo di ciascuna rata comprende una quota di capitale crescente e interessi decrescente secondo un piano di ammortamento “alla francese”. Offerta valida dal 01/01/2024 al 31/12/2024.

Messaggio pubblicitario con finalità promozionale. Per le informazioni precontrattuali richiedere sul punto vendita il documento “Informazioni europee di base sul credito ai consumatori” (SECCI) e copia del testo contrattuale. Salvo approvazione di Sella Personal Credit S.p.A. Aulab S.r.l. opera quale intermediario del credito NON in esclusiva.

*In fase di richiesta del finanziamento verrà proposta la facoltà di selezionare, in alternativa all’imposta di bollo sul contratto di 16,00 euro, l’imposta sostitutiva, pari allo 0,25% dell’importo finanziato.

Pagamento rateale

Valore della rata: A PARTIRE DA 210 €/mese.

Esempio di finanziamento  

Importo finanziato: € 4500 in 24 rate da € 210,03 – TAN fisso 9,68% TAEG 11,97% – importo totale del credito € 5146,55.

Il costo totale del credito comprende: interessi calcolati al TAN indicato, oneri fiscali (imposta di bollo sul contratto 16,00 euro*) addebitati sulla prima rata, costo mensile di gestione pratica € 3,90, spesa di istruttoria € 0,00, spesa per invio rendicontazione periodica cartacea € 0,98 (o spesa per invio rendicontazione periodica cartacea € 0,00), imposta di bollo su rendicontazione periodica € 0,00. Modalità di rimborso obbligatoria: addebito diretto su c/c. La scadenza delle rate è determinata dal giorno della liquidazione del contratto; la data di scadenza delle rate è prevista il giorno 15 del mese. L’importo di ciascuna rata comprende una quota di capitale crescente e interessi decrescente secondo un piano di ammortamento “alla francese”. Offerta valida dal 01/01/2024 al 31/12/2024.

Messaggio pubblicitario con finalità promozionale. Per le informazioni precontrattuali richiedere sul punto vendita il documento “Informazioni europee di base sul credito ai consumatori” (SECCI) e copia del testo contrattuale. Salvo approvazione di Sella Personal Credit S.p.A. Aulab S.r.l. opera quale intermediario del credito NON in esclusiva.

* In fase di richiesta del finanziamento verrà proposta la facoltà di selezionare, in alternativa all’imposta di bollo sul contratto di 16,00 euro, l’imposta sostitutiva, pari allo 0,25% dell’importo finanziato.

Contattaci senza impegno per informazioni sul corso

Scopriamo insieme se i nostri corsi fanno per te. Compila il form e aspetta la chiamata di uno dei nostri consulenti.