Invia e -mail in Laravel usando SMTP

Invia e -mail in Laravel usando SMTP
L'invio di un'e -mail è un requisito comune per qualsiasi applicazione Web. Alcuni usi generali dell'invio di e -mail includono la verifica della registrazione degli utenti, la ricezione di feedback dagli utenti, la fornitura di opzioni per contattare l'amministratore del sito, ecc. Il framework Laravel contiene diversi pacchetti per inviare e -mail dal progetto Laravel. SMTP, Mailgun, Postmark e Amazon SES sono utilizzati in Laravel per inviare e -mail semplici, transazionali e sfuse. Laravel ha una biblioteca di e-mail denominata Swiftmailer per inviare un'e-mail con un modello di posta elettronica. Questo tutorial ti mostra come inviare una semplice email utilizzando SMTP.

Setup e configurazione SMTP

Apri il .env File dalla cartella root del progetto Laravel e imposta la configurazione secondo il tuo account Gmail. Devi abilitare il “App meno sicura"Opzione del tuo account Gmail per inviare un'e -mail utilizzando il server Gmail SMTP.

Mail_mailer = SMTP
Mail_host = Smtp.gmail.com
Mail_port = 465
Mail_userName = your_email_address
Mail_password = your_password
Mail_encryption = ssl

***Nota:

È possibile ricevere l'errore di autenticazione SMTP durante l'invio di e -mail utilizzando il server Account Gmail SMTP. Apri il StreamBuffer.PHP File dalla seguente posizione.

/var/www/html/laravelpro/fornitore/swiftmailer/swiftmailer/
Lib/Classes/Swift/Transport/StreamBuffer.PHP

Trova e sostituisci la linea 259 con la riga seguente per autenticare il server Gmail SMTP.

$ options ['ssl'] = array ('verify_peer' => false, 'verifica_peer_name' => false,
'abilit_self_signed' => true);

Invio di e -mail tramite SMTP

Esegui i seguenti passaggi per inviare e -mail utilizzando il modulo di contatto creando una classe controller, visualizza e posta.

Passaggi:

Esegui il seguente comando dal terminale per creare EmailController Per mostrare il modulo di contatto e inviare un'e -mail utilizzando Laravel Mail Class.

$ PHP Artisan Make: Controller EmailController

Esegui il comando seguente per creare una classe di posta denominata Email di invio. Questo creerà la classe sotto il App \ Mail cartella.

$ PHP Artisan Make: Mail InveningEmail

Crea un file di visualizzazione chiamato e -mailsend.lama.PHP con il seguente codice per visualizzare il modulo di contatto.




Contattaci modulo












Contattaci




@if (conteggio ($ errori)> 0)



    @foreach ($ errori-> tutto () come $ ERROR)
  • $ ERROR

  • @Endforeach


@finisci se
@if ($ message = session :: get ('successo'))


$ message

@finisci se



csrf_field ()


















Aprire EmailController e modificare il codice con il seguente codice. IL Posta facciata e Email di invio Le classi di posta vengono importate all'inizio del file. Qui, il indice() Il metodo caricherà il file di visualizzazione nel browser per visualizzare il modulo di contatto. Dopo aver inviato il modulo, il Inviare() Il metodo verrà chiamato. Questo metodo convaliderà il modulo utilizzando le regole di convalida. IL $ dati L'array viene utilizzato per inviare i valori del nome E Messaggio campi nel Email di invio classe. Successivamente, l'e -mail viene inviata utilizzando il Posta facciata. È necessario impostare un indirizzo e -mail valido del ricevitore in A() funzione prima di eseguire il codice. Se l'e -mail invia correttamente, un messaggio di successo verrà stampato.

APPPACE NAME \ HTTP \ Controller;
Usa Illuminate \ http \ richiesta;
Usa Illuminate \ Support \ Facedes \ Mail;
Usa l'app \ Mail \ SendingEmail;
Classe EmailController estende il controller

indice di funzione ()

return view ('emailsend');

funzione invia (richiesta $ richiesta)

$ this-> Convalida ($ richiesta, [
'name' => 'richiesto',
'email' => 'richiesto | email',
'messaggio' => 'richiesto'
]);
$ data = array (
'name' => $ request-> name,
'messaggio' => $ request-> messaggio
);
Mail :: to ('Ricevitore e-mail')-> Invia (nuovo email di invio ($ dati));
ritorna indietro ()-> con ("successo", grazie per averci contattato!');

Apri il Email di invio classe e modifica il codice con il seguente codice. L'argomento e -mail è definito all'interno del costruire() metodo e il email_template Visualizza viene utilizzata per formattare il contenuto e -mail, creato nel passaggio successivo. I valori passati dal file EmailController sono immagazzinati $ email oggetto e vengono passati nel file email_template visualizzazione.

Appspace App \ Mail;
Usa illuminare \ bus \ queueable;
Usa illuminare \ contratti \ queue \ dovrebbequeue;
Usa Illuminate \ Mail \ Mailable;
utilizzare illuminate \ queue \ serializesModels;
Email di classe di classe si estende

Usa queeable, serializza model;
/**
* Crea una nuova istanza di messaggio.
*
* @return void
*/
Public $ e -mail;
funzione pubblica __construct ($ e -mail)

$ this-> email = $ email;

/**
* Crea il messaggio.S
*
* @return $ this
*/
build pubblica ()

return $ this-> soggetto ("messaggio dal visitatore")
-> Visualizza ('email_template')
-> con ("e-mail", $ this-> e-mail);

Crea il file di visualizzazione modello denominato email_template.lama.PHP con il seguente codice per inviare l'e -mail formattata al mittente. I valori passati dal file Email di invio la classe sono usate in questo modello.

Ciao,
Sono $ email ['name']


La mia domanda riguarda il seguente argomento:


$ email ['message'].


Sarà utile se mi dai presto una risposta.Grazie.

Ora, apri il ragnatela.PHP File e aggiungi il seguente codice di percorso per aprire il modulo di contatto e inviare l'e -mail.

Route :: get ('/contact', 'emailcontroller@indice');
Route :: Post ('/Sendemail/Send', 'emailController@Send');

Eseguire il seguente URL dal browser per caricare il modulo di contatto.

http: // localhost/laravelpro/public/contact

Compilare il modulo e fare clic su Invia messaggio pulsante per inviare il contenuto del modulo a Inviare() metodo del EmailController classe.

Se l'e -mail viene inviata correttamente, otterrai il messaggio di successo, come mostrato nella seguente immagine.

Ora apri l'account Gmail che hai usato per inviare un'e -mail in Inviare() metodo del EmailController classe. Se apri l'e -mail, otterrai il seguente contenuto e -mail, generato utilizzando un email_template vedi il file.

Tutorial video

Conclusione

Esistono diversi modi nel framework Laravel per inviare un'e -mail. Il modo più semplice e semplice per inviare e -mail in Laravel è mostrato in questo tutorial. Se hai un account Gmail, puoi facilmente inviare un'e -mail seguendo i passaggi mostrati in questo tutorial. Il server Gmail SMTP viene utilizzato qui per inviare un'e -mail e l'attività di invio e -mail viene testata eseguendo il codice dal server locale. Questo tutorial mostra solo compiti di invio di e-mail in formato HTML. Puoi anche eseguire altre attività, come allegato di file, nome mittente, ecc., utilizzando altri metodi del Posta classe.