Impostazione e configurazione SMTP
Apri il .env file dalla cartella principale del progetto Laravel e imposta la configurazione in base al tuo account Gmail. Devi abilitare il "App meno sicura"opzione del tuo account Gmail per inviare un'e-mail utilizzando il server SMTP di Gmail.
MAIL_MAILER=smtpMAIL_HOST=smtp.gmail.come
MAIL_PORT=465
MAIL_USERNAME=IL_TUO_INDIRIZZO_EMAIL
MAIL_PASSWORD=LA TUA_PASSWORD
MAIL_ENCRYPTION=ssl
***Nota:
Potresti ricevere l'errore di autenticazione SMTP durante l'invio di e-mail utilizzando il server dell'account Gmail SMTP. Apri il StreamBuffer.php file dalla seguente posizione.
/var/www/html/laravelpro/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/StreamBuffer.php
Trova e sostituisci riga 259 con la seguente riga per autenticare il server SMTP di Gmail.
$options['ssl'] = array('verify_peer' => false, 'verify_peer_name' => false,'allow_self_signed' => vero);
Invio di email tramite SMTP
Eseguire i seguenti passaggi per inviare e-mail utilizzando il modulo di contatto creando un controller, una vista e una classe di posta.
Passaggi:
Esegui il seguente comando dal terminale per creare EmailController per mostrare il modulo di contatto e inviare un'e-mail utilizzando la classe di posta di Laravel.
$ php craft make:controller EmailControllerEsegui il seguente comando per creare una classe di posta denominata invioEmail. Questo creerà la classe sotto il App\Posta cartella.
$ php artigiano make:mail sendEmailCrea un file di visualizzazione denominato inviare email email.lama.php con il seguente codice per visualizzare il form di contatto.
Contattaci
@if (count($errors) > 0)
- $errore
@foreach ($errors->all() as $error)
@endforeach
@finisci se
@if ($messaggio = Sessione::get('successo'))
$messaggio
@finisci se
Aperto EmailController e modificare il codice con il seguente codice. Il posta facciata e invioEmail 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 Spedire() verrà chiamato il metodo. Questo metodo convaliderà il modulo utilizzando le regole di convalida. Il $dati array viene utilizzato per inviare i valori di nome e Messaggio campi nel invioEmail classe. Successivamente, l'e-mail viene inviata utilizzando il posta facciata. È necessario impostare un indirizzo email valido del destinatario nel per() funzione prima di eseguire il codice. Se l'e-mail viene inviata correttamente, verrà stampato un messaggio di successo.
spazio dei nomi App\Http\Controllers;usa Illumina\Http\Request;
usa Illumina\Support\Facades\Mail;
usa App\Mail\sendingEmail;
class EmailController estende Controller
indice di funzione()
return view('invio email');
funzione send(Richiesta $richiesta)
$this->validate($request, [
'nome' => 'richiesto',
'email' => 'richiesto|e-mail',
'messaggio' => 'richiesto'
]);
$dati = matrice(
'nome' => $richiesta->nome,
'messaggio' => $richiesta->messaggio
);
Mail::to('Indirizzo e-mail del destinatario')->send(new SendEmail($data));
return back()->with('success', 'Grazie per averci contattato!');
Apri il invioEmail class e modificare il codice con il seguente codice. L'oggetto dell'email è definito all'interno del costruire() metodo e il email_template vista viene utilizzata per formattare il contenuto dell'e-mail, creato nel passaggio successivo. I valori passati dal EmailController sono memorizzati nel $email oggetto e sono passati nel email_template Visualizza.
spazio dei nomi App\Mail;usa Illumina\Bus\Queueable;
usa Illumina\Contracts\Queue\ShouldQueue;
usa Illumina\Mail\Mailable;
usa Illumina\Queue\SerializesModels;
class sendEmail estende Mailable
usa Queueable, SerializesModels;
/**
* Crea una nuova istanza di messaggio.
*
* @return void
*/
$email pubbliche;
funzione pubblica __construct($email)
$questo->e-mail = $e-mail;
/**
* Costruisci il messaggio.S
*
* @return $this
*/
funzione pubblica build()
return $this->subject('Messaggio del visitatore')
->view('email_template')
->with('email', $this->email);
Crea il file di visualizzazione del modello denominato email_template.lama.php con il seguente codice per inviare la mail formattata al mittente. I valori passati dal invioEmail classe sono usati in questo modello.
Ciao,
sono $email['nome']
La mia domanda riguarda il seguente argomento:
$email['messaggio'] .
Mi sarà utile se mi dai una risposta presto.Grazie.
Ora apri il ragnatela.php file e aggiungere il seguente codice di percorso per aprire il modulo di contatto e inviare l'e-mail.
Route::get('/contact', '[email protected]');Route::post('/sendmail/send', '[email protected]');
Esegui il seguente URL dal browser per caricare il modulo di contatto.
http://localhost/laravelpro/public/contact
Compila il form e clicca su Invia messaggio pulsante per inviare il contenuto del modulo al Spedire() metodo del EmailController classe.
Se l'e-mail viene inviata con successo, otterrai il messaggio di successo, come mostrato nell'immagine seguente.
Ora apri l'account Gmail che hai utilizzato per inviare un'e-mail nel in Spedire() metodo del EmailController classe. Se apri l'e-mail, otterrai il seguente contenuto dell'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 facile 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 SMTP di Gmail viene utilizzato qui per inviare un'e-mail e l'attività di invio dell'e-mail viene testata eseguendo il codice dal server locale. Questo tutorial mostra solo le attività di invio di email in formato HTML. Puoi anche eseguire altre attività, come file allegati, nome del mittente, ecc., utilizzando altri metodi di posta classe.