Laravel - wysyłanie wiadomości e-mail
Laravel korzysta z bezpłatnej bogatej w funkcje biblioteki SwiftMailerdo wysyłania e-maili. Korzystając z funkcji biblioteki, możemy łatwo wysyłać e-maile bez zbytniego kłopotu. Szablony e-maili są ładowane w taki sam sposób jak widoki, co oznacza, że możesz używać składni Blade i wstrzykiwać dane do szablonów.
W poniższej tabeli przedstawiono składnię i atrybuty send funkcja -
Składnia | void send (string | array $ view, array $ data, Closure | string $ callback) |
Parametry |
|
Zwroty | nic |
Opis | Wysyła e-mail. |
W trzecim argumencie, $ callback closure otrzymała instancję komunikatu i za pomocą tego wystąpienia możemy również wywołać następujące funkcje i zmienić komunikat, jak pokazano poniżej.
- $ message → subject ('Witamy w Poradniku Samouczków');
- $ wiadomość → from ('[email protected] ',' Mr. Example ');
- $ wiadomość → do ('[email protected]', 'Pan Przykład');
Niektóre z mniej popularnych metod obejmują:
- $ wiadomość → nadawca („[email protected]”, „Pan Przykład”);
- $ wiadomość → returnPath ('[email protected] ');
- $ wiadomość → DW („[email protected]”, „Pan Przykład”);
- $ wiadomość → UDW („[email protected]”, „Pan Przykład”);
- $ message → ReplyTo ('[email protected] ',' Mr. Example ');
- $ wiadomość → priorytet (2);
Aby dołączyć lub osadzić pliki, możesz użyć następujących metod -
- $ wiadomość → załącz ('ścieżka / do / załącznika.txt');
- $ wiadomość → umieść ('ścieżka / do / załącznika.jpg');
Poczta może być wysyłana jako HTML lub tekst. Możesz określić typ wiadomości, którą chcesz wysłać w pierwszym argumencie, przekazując tablicę, jak pokazano poniżej. Typ domyślny to HTML. Jeśli chcesz wysłać zwykłą wiadomość tekstową, użyj następującej składni.
Składnia
Mail::send([‘text’=>’text.view’], $data, $callback);
W tej składni pierwszy argument przyjmuje tablicę. Posługiwać siętext jako nazwa klucza widoku jako wartość klucza.
Przykład
Step 1 - Teraz wyślemy wiadomość e-mail z konta Gmail i do tego musisz skonfigurować swoje konto Gmail w pliku środowiska Laravel - .envplik. Włącz weryfikację dwuetapową na swoim koncie Gmail i utwórz hasło aplikacji, a następnie zmień parametry .env, jak pokazano poniżej.
.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 - Po zmianie .env plik wykonaj poniższe dwie komendy, aby wyczyścić pamięć podręczną i zrestartować serwer Laravel.
php artisan config:cache
Step 3 - Utwórz kontroler o nazwie MailController wykonując następujące polecenie.
php artisan make:controller MailController --plain
Step 4 - Po pomyślnym wykonaniu otrzymasz następujące dane wyjściowe -
Step 5 - Skopiuj następujący kod w formacie
app/Http/Controllers/MailController.php plik.
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 - Skopiuj następujący kod w formacie resources/views/mail.blade.php plik.
resources/views/mail.blade.php
<h1>Hi, {{ $name }}</h1>
l<p>Sending Mail from Laravel.</p>
Step 7 - Dodaj następujące wiersze app/Http/routes.php.
app/Http/routes.php
Route::get('sendbasicemail','MailController@basic_email');
Route::get('sendhtmlemail','MailController@html_email');
Route::get('sendattachmentemail','MailController@attachment_email');
Step 8 - Odwiedź następujący adres URL, aby przetestować podstawową pocztę e-mail.
http://localhost:8000/sendbasicemail
Step 9- Ekran wyjściowy będzie wyglądał mniej więcej tak. Sprawdź swoją skrzynkę odbiorczą, aby zobaczyć podstawowe wyjście e-mail.
Step 10 - Odwiedź następujący adres URL, aby przetestować wiadomość e-mail w formacie HTML.
http://localhost:8000/sendhtmlemail
Step 11- Ekran wyjściowy będzie wyglądał mniej więcej tak. Sprawdź swoją skrzynkę odbiorczą, aby zobaczyć wynik e-maila w formacie HTML.
Step 12 - Odwiedź poniższy adres URL, aby przetestować wiadomość e-mail w formacie HTML z załącznikiem.
http://localhost:8000/sendattachmentemail
Step 13 - Możesz zobaczyć następujące dane wyjściowe
Note - W MailController.phpplik adres e-mail w metodzie od powinien być adresem e-mail, z którego można wysłać adres e-mail. Ogólnie powinien to być adres e-mail skonfigurowany na serwerze.