In questo articolo, esploreremo l'API Mail nel framework web di Laravel. Laravel sfrutta la famosa libreria SwiftMailer, che è facile da usare e include una varietà di driver di posta elettronica tra cui scegliere. Nelle ultime fasi dell'articolo, passeremo attraverso una dimostrazione approfondita dei concetti discussi nella prima metà dell'articolo.
Laravel implementa un wrapper sulla libreria SwiftMailer che semplifica la configurazione e l'utilizzo della gestione della posta elettronica allo stesso tempo. Puoi trovare le impostazioni di posta elettronica predefinite all'indirizzo config / mail.php
.
env ('MAIL_DRIVER', 'sendmail'), / * | ------------------------------------ -------------------------------------- | Indirizzo host SMTP | ---------------------------------------------- ---------------------------- | | Qui puoi fornire l'indirizzo host del server SMTP usato dal tuo | applicazioni. Viene fornita un'opzione predefinita compatibile con | il servizio di posta Mailgun che fornirà consegne affidabili. | * / 'host' => env ('MAIL_HOST', 'smtp.mailgun.org'), / * | ------------------------- ------------------------------------------------- | Porta host SMTP | ---------------------------------------------- ---------------------------- | | Questa è la porta SMTP utilizzata dalla tua applicazione per consegnare e-mail a | utenti dell'applicazione. Come l'host abbiamo impostato questo valore su | rimanere compatibile con l'applicazione e-mail di Mailgun per impostazione predefinita. | * / 'port' => env ('MAIL_PORT', 587), / * | ------------------------------- ------------------------------------------- | Indirizzo "Da" globale | -------------------------------------------- ------------------------------ | | Potresti desiderare che tutte le e-mail inviate dalla tua domanda siano inviate da | lo stesso indirizzo. Qui, puoi specificare un nome e un indirizzo che è | utilizzato globalmente per tutte le e-mail inviate dall'applicazione. | * / 'from' => ['address' => env ('MAIL_FROM_ADDRESS', '[email protected]'), 'nome' => env ('MAIL_FROM_NAME', 'Esempio'),], / * | - -------------------------------------------------- ----------------------- | Protocollo di crittografia e-mail | -------------------------------------------- ------------------------------ | | Qui è possibile specificare il protocollo di crittografia da utilizzare quando | l'applicazione invia messaggi di posta elettronica. Un valore sensato predefinito usando il | il protocollo di sicurezza del livello di trasporto dovrebbe fornire una grande sicurezza. | * / 'encryption' => env ('MAIL_ENCRYPTION', 'tls'), / * | ----------------------------- --------------------------------------------- | Nome utente server SMTP | ---------------------------------------------- ---------------------------- | | Se il server SMTP richiede un nome utente per l'autenticazione, è necessario | Impostare qui. Questo verrà utilizzato per l'autenticazione con il tuo server su | connessione. È inoltre possibile impostare il valore "password" sotto questo. | * / 'username' => env ('MAIL_USERNAME'), 'password' => env ('MAIL_PASSWORD'), / * | --------------------- -------------------------------------------------- --- | Percorso del sistema Sendmail | ---------------------------------------------- ---------------------------- | | Quando si utilizza il driver "sendmail" per inviare e-mail, sarà necessario sapere | il percorso verso il quale Sendmail risiede su questo server. Un percorso predefinito ha | è stato fornito qui, che funzionerà bene sulla maggior parte dei tuoi sistemi. | * / 'sendmail' => '/ usr / sbin / sendmail -bs', / * | ----------------------------- --------------------------------------------- | Impostazioni posta su Markdown | ---------------------------------------------- ---------------------------- | | Se si utilizza il rendering e-mail basato su Markdown, è possibile configurare il proprio | temi e percorsi dei componenti qui, che consentono di personalizzare il design | delle e-mail. Oppure, puoi semplicemente limitarti alle impostazioni di default di Laravel! | * / 'markdown' => ['theme' => 'default', 'paths' => [percorso_risorse ('viste / vendor / mail'),],],];
Quando si tratta di inviare mail, Laravel supporta diversi driver tra cui scegliere. Come puoi vedere, l'impostazione predefinita MAIL_DRIVER
è impostato per smtp
.
Se hai intenzione di usare il smtp
driver per inviare mail quindi ti viene anche richiesto di impostare altre impostazioni correlate come MAIL_HOST
, mail_port
, MAIL_ENCRYPTION
, MAIL_USERNAME
, e MAIL_PASSWORD
.
D'altra parte, se hai intenzione di usare il inviare una mail
driver, quindi si desidera assicurarsi che il inviare una mail
il percorso di sistema è impostato sul valore corretto in config / mail.php
file.
Puoi anche impostare il a partire dal
indirizzo che verrà utilizzato durante l'invio di posta sotto il a partire dal
chiave. Infine, se si desidera utilizzare il rendering e-mail basato su Markdown, è possibile impostare tali impostazioni sotto riduione di prezzo
chiave.
La ciliegina sulla torta è che potresti anche utilizzare provider di servizi di posta elettronica di terze parti come Mailgun, Mandrill, SES e SparkPost. Se si utilizza uno di questi servizi, è necessario assicurarsi di aver impostato le impostazioni corrispondenti in config / services.php
file.
Questa è stata un'introduzione di base alle impostazioni relative all'API della posta in Laravel. Dalla prossima sezione in poi, vedremo un esempio personalizzato che mostra come inviare e-mail.
In questa sezione, creeremo la classe di posta elettronica, che verrà utilizzata per inviare e-mail. La classe di posta è responsabile per l'invio di e-mail utilizzando un mailer configurato in config / mail.php
file. In effetti, Laravel fornisce già un comando artigiano che ci consente di creare un modello base.
php artisan make: mail DemoEmail
Questo dovrebbe creare un modello di email vuoto a App / Mail / DemoEmail.php
, come mostrato nel seguente frammento.
Vista ( 'view.name');
Sostituiamo il contenuto di quel file con il seguente.
demo = $ demo; / ** * Costruisci il messaggio. * * @return $ this * / public function build () return $ this-> from ([email protected] ') -> view (' mails.demo ') -> text (' mails.demo_plain ') - > with (['testVarOne' => '1', 'testVarTwo' => '2',]) -> attach (percorso pubblico ('/ images'). '/ demo.jpg', ['as' => ' demo.jpg ',' mime '=>' image / jpeg ',]);
Esistono due metodi importanti che la classe di posta elettronica generalmente implementa-__costruire
e costruire
. Il __costruire
il metodo è usato per inizializzare gli oggetti che dovresti usare nel modello di email. D'altra parte, il costruire
il metodo viene utilizzato per inizializzare più valori specifici per e-mail come da, visualizzare template, allegati e simili.
Nel nostro caso, abbiamo superato il $ demo
oggetto come argomento costruttore, ed è assegnato a dimostrazione
proprietà pubblica.
Nel costruire
metodo, abbiamo inizializzato una configurazione specifica per email.
a partire dal
è usato per impostare un indirizzo email che verrà utilizzato come indirizzo.vista
metodo, è possibile impostare il modello di posta elettronica che verrà utilizzato durante l'invio di una e-mail utilizzando questo mailable. Nel nostro caso, l'abbiamo impostato su mails.demo
, e significa che devi creare un file modello di visualizzazione su Resources / views / mail / demo.blade.php
.testo
il metodo viene utilizzato per impostare la versione in testo normale di un modello di posta elettronica.__costruire
il metodo viene utilizzato per impostare gli oggetti che verranno utilizzati nel modello di posta elettronica, è inoltre possibile utilizzare il con
metodo che consente di impostare i dati di visualizzazione di un messaggio.allegare
metodo per allegare un'immagine con un messaggio.Ovviamente, dobbiamo creare modelli di email che dovremmo utilizzare durante l'invio di email. Vai avanti e crea un file Resources / views / mail / demo.blade.php
come mostrato nel seguente frammento.
Ciao $ demo-> ricevitore,Questa è una email dimostrativa a scopo di test! Inoltre, è la versione HTML.
Demo valori oggetto:
Demo One: $ demo-> demo_one
Demo due: $ demo-> demo_two
Valori passati da Con metodo:
Grazie,testVarOne: $ testVarOne
testVarTwo: $ testVarTwo
$ demo-> sender
Inoltre, creiamo la versione in chiaro del file in Resources / views / mail / demo_plain.blade.php
.
Salve $ demo-> receiver, questa è una email dimostrativa a scopo di test! Inoltre, è la versione HTML. Demo degli oggetti: Demo uno: $ demo-> demo_one Demo due: $ demo-> demo_two Valori passati con Metodo: testVarOne: $ testVarOne testVarOne: $ testVarOne Grazie, $ demo-> sender
Quindi questa era la classe di posta elettronica a tua disposizione, e non abbiamo ancora finito dato che abbiamo bisogno di usare il posta
facciata per inviare effettivamente mail. Nella prossima sezione, esploreremo come è possibile utilizzare il posta
Facciata per inviare e-mail usando il DemoEmail
Classe disponibile che è stata appena creata in questa sezione.
In questa sezione creeremo un esempio per dimostrare come è possibile utilizzare il mailable
classe che è stata creata nell'ultima sezione.
Creiamo un file di controller su App / HTTP / Controller / MailController.php
con i seguenti contenuti.
demo_one = 'Demo One Value'; $ objDemo-> demo_two = 'Demo due valori'; $ objDemo-> sender = 'SenderUserName'; $ objDemo-> receiver = 'ReceiverUserName'; Mail :: to ("[email protected]") -> send (new DemoEmail ($ objDemo));
È importante notare che abbiamo incluso il Illuminare \ Support \ Facciate \ Mail
Facciata che verrà utilizzata per inviare una email. Nel inviare
metodo, la seguente dichiarazione è responsabile per l'invio di una e-mail inizializzando il App \ Mail \ DemoEmail
Mailable in primo luogo.
Mail :: to ("[email protected]") -> send (new DemoEmail ($ objDemo));
Il a
metodo del Illuminare \ Support \ Facciate \ Mail
Facciata restituisce un'istanza di \ Illuminate \ Mail \ PendingMail
classe, che contiene già un mailer appropriato configurato in config / mail.php
file.
E infine, usiamo il inviare
metodo del \ Illuminate \ Mail \ PendingMail
classe che invia un'e-mail effettiva.
Per testarlo, aggiungiamo un percorso associato nel percorsi / web.php
file.
// Percorsi relativi all'email Route :: get ('mail / send', 'MailController @ send');
E con questo, puoi eseguire l'URL http://your-laravel-site.com/mail/send per vedere se funziona come previsto.
D'altra parte, se vuoi testare rapidamente i tuoi modelli di email, senza inviare email effettive, c'è una clausola in Laravel che ti permette di registrare tutte le email in uscita.
Per ottenere ciò, è necessario impostare il valore di MAIL_DRIVER
a ceppo
nel config / mail.php
file. Successivamente, è possibile eseguire l'URL summenzionato e ispezionare il file di registro per verificare se il modello di posta elettronica è stato registrato lì.
Se tutto va bene, dovresti vedere un'e-mail che viene registrata su stoccaggio / logs / laravel.log
file.
Questo è più o meno per quanto riguarda la funzionalità di posta elettronica in Laravel, e questo conclude anche questo articolo.
Oggi abbiamo analizzato l'API di posta che viene incorporata in Laravel e supporta anche una varietà di driver.
Partendo dai concetti di base, abbiamo implementato la classe mailable che è un elemento essenziale nell'API di posta di Laravel man mano che ci spostiamo. Alla fine, abbiamo anche testato la classe mailable creando un controller personalizzato per vedere se funziona effettivamente.
Se hai appena iniziato con Laravel o stai cercando di espandere le tue conoscenze, il tuo sito o la tua applicazione con le estensioni, abbiamo una varietà di cose che puoi studiare nel mercato di Envato.
Mi piacerebbe conoscere il tuo feedback sotto forma di domande e commenti utilizzando il feed sottostante!