Laravel - Invio di e-mail

Laravel utilizza una libreria gratuita ricca di funzionalità SwiftMailerper inviare e-mail. Utilizzando la funzione libreria, possiamo inviare facilmente e-mail senza troppi problemi. I modelli di posta elettronica vengono caricati allo stesso modo delle visualizzazioni, il che significa che puoi utilizzare la sintassi Blade e inserire dati nei modelli.

La tabella seguente mostra la sintassi e gli attributi di send funzione -

Sintassi void send (string | array $ view, array $ data, Closure | string $ callback)
Parametri
  • $ view (string | array) - nome della vista che contiene il messaggio di posta elettronica

  • $ data (array) - matrice di dati da passare alla visualizzazione

  • $ callback - una richiamata di chiusura che riceve un'istanza di messaggio, consentendo di personalizzare i destinatari, l'oggetto e altri aspetti del messaggio di posta

ritorna Niente
Descrizione Invia e-mail.

Nel terzo argomento, la chiusura $ callback ha ricevuto l'istanza del messaggio e con quell'istanza possiamo anche chiamare le seguenti funzioni e modificare il messaggio come mostrato di seguito.

Alcuni dei metodi meno comuni includono:

Per allegare o incorporare file, puoi utilizzare i seguenti metodi:

  • $ messaggio → allegare ('percorso / a / allegato.txt');
  • $ messaggio → embed ('percorso / a / allegato.jpg');

La posta può essere inviata come HTML o testo. È possibile indicare il tipo di posta che si desidera inviare nel primo argomento passando un array come mostrato di seguito. Il tipo predefinito è HTML. Se desideri inviare messaggi di testo normale, utilizza la seguente sintassi.

Sintassi

Mail::send([‘text’=>’text.view’], $data, $callback);

In questa sintassi, il primo argomento accetta un array. Usotext come nome della chiave della vista come valore della chiave.

Esempio

Step 1 - Ora invieremo un'email dall'account Gmail e per questo dovrai configurare il tuo account Gmail nel file dell'ambiente Laravel - .envfile. Abilita la verifica in due passaggi nel tuo account Gmail e crea una password specifica per l'applicazione seguita modificando i parametri .env come mostrato di seguito.

.env

MAIL_DRIVER = smtp
MAIL_HOST = smtp.gmail.com
MAIL_PORT = 587
MAIL_USERNAME = your-gmail-username
MAIL_PASSWORD = your-application-specific-password
MAIL_ENCRYPTION = tls

Step 2 - Dopo aver cambiato il file .env file esegui i due comandi seguenti per cancellare la cache e riavviare il server Laravel.

php artisan config:cache

Step 3 - Crea un controller chiamato MailController eseguendo il seguente comando.

php artisan make:controller MailController --plain

Step 4 - Dopo aver eseguito con successo, riceverai il seguente output -

Step 5 - Copia il seguente codice in formato

app/Http/Controllers/MailController.php file.

app/Http/Controllers/MailController.php

<?php

namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Mail;

use App\Http\Requests;
use App\Http\Controllers\Controller;

class MailController extends Controller {
   public function basic_email() {
      $data = array('name'=>"Virat Gandhi");
   
      Mail::send(['text'=>'mail'], $data, function($message) {
         $message->to('[email protected]', 'Tutorials Point')->subject
            ('Laravel Basic Testing Mail');
         $message->from('[email protected]','Virat Gandhi');
      });
      echo "Basic Email Sent. Check your inbox.";
   }
   public function html_email() {
      $data = array('name'=>"Virat Gandhi");
      Mail::send('mail', $data, function($message) {
         $message->to('[email protected]', 'Tutorials Point')->subject
            ('Laravel HTML Testing Mail');
         $message->from('[email protected]','Virat Gandhi');
      });
      echo "HTML Email Sent. Check your inbox.";
   }
   public function attachment_email() {
      $data = array('name'=>"Virat Gandhi");
      Mail::send('mail', $data, function($message) {
         $message->to('[email protected]', 'Tutorials Point')->subject
            ('Laravel Testing Mail with Attachment');
         $message->attach('C:\laravel-master\laravel\public\uploads\image.png');
         $message->attach('C:\laravel-master\laravel\public\uploads\test.txt');
         $message->from('[email protected]','Virat Gandhi');
      });
      echo "Email Sent with attachment. Check your inbox.";
   }
}

Step 6 - Copia il seguente codice in formato resources/views/mail.blade.php file.

resources/views/mail.blade.php

<h1>Hi, {{ $name }}</h1>
l<p>Sending Mail from Laravel.</p>

Step 7 - Aggiungi le seguenti righe app/Http/routes.php.

app/Http/routes.php

Route::get('sendbasicemail','[email protected]_email');
Route::get('sendhtmlemail','[email protected]_email');
Route::get('sendattachmentemail','[email protected]_email');

Step 8 - Visita il seguente URL per testare l'email di base.

http://localhost:8000/sendbasicemail

Step 9- La schermata di output sarà simile a questa. Controlla la tua casella di posta per vedere l'output email di base.

Step 10 - Visita il seguente URL per testare l'email HTML.

http://localhost:8000/sendhtmlemail

Step 11- La schermata di output sarà simile a questa. Controlla la tua casella di posta per vedere l'output dell'email html.

Step 12 - Visita il seguente URL per testare l'e-mail HTML con allegato.

http://localhost:8000/sendattachmentemail

Step 13 - È possibile visualizzare il seguente output

Note - Nel MailController.phpfile l'indirizzo e-mail nel metodo da dovrebbe essere l'indirizzo e-mail da cui è possibile inviare l'indirizzo e-mail. Generalmente, dovrebbe essere l'indirizzo e-mail configurato sul tuo server.