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 |
|
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.
- $ messaggio → oggetto ('Benvenuto al punto tutorial');
- $ messaggio → da ('[email protected] ',' Mr. Example ');
- $ messaggio → a ('[email protected] ',' Mr. Example ');
Alcuni dei metodi meno comuni includono:
- $ messaggio → mittente ('[email protected] ',' Mr. Example ');
- $ messaggio → returnPath ('[email protected] ');
- $ messaggio → cc ('[email protected] ',' Mr. Example ');
- $ messaggio → bcc ('[email protected] ',' Mr. Example ');
- $ messaggio → replyTo ('[email protected] ',' Mr. Example ');
- $ messaggio → priorità (2);
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.