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
  • $ view (string | array) - nazwa widoku zawierającego wiadomość e-mail

  • $ dane (tablica) - tablica danych do przekazania do widoku

  • $ callback - wywołanie zwrotne Closure, które odbiera instancję wiadomości, umożliwiając dostosowanie odbiorców, tematu i innych aspektów wiadomości e-mail

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ą:

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.