Laravel mail: 5 sposobów wysyłania

  1. Cechy wysyłania poczty do Laravel
  2. Ustawienia poczty Laravel
  3. Wysyłanie listów do Laravel przez API usług pocztowych
  4. Ustawienia Laravel Mailgun
  5. Ustawienia Laravel Mandrill
  6. Skonfiguruj Laravel SparkPost
  7. Skonfiguruj Laravel Amazon SES
  8. Wysyłanie poczty do Laravel przez SMTP
  9. Laravel mail - wyślij za pomocą php mail ()
  10. Wysłanie listu do Laravel przez sendmail
  11. Laravel mail - logowanie
  12. Wybierz najlepszy sposób wysyłania wiadomości e-mail do Laravel
  13. Listy wysyłkowe do Laravel na serwerze aplikacji lub za pośrednictwem strony trzeciej?

Cześć wszystkim Cześć wszystkim! 🙂

Ci, którzy subskrybował aktualizacje projektu, a po wydaniu artykułów wiem, że w ostatniej publikacji rozważaliśmy wdrożenie popularnej technologii na przykładzie tworzenia formularza zwrotnego AJAX do Laravela .

W nim zaimplementowaliśmy żądanie do serwera i skrypt działań na stronie po otrzymaniu odpowiedzi. Pozostaje tylko napisanie skryptu Laravel, który wysyła e-mail do administratora na serwerze, zamiast którego mamy teraz skrót w postaci parametrów żądania wyjścia.

Obiecałem to zrobić w następnym artykule, tj. w biegu. Jednak podczas przygotowywania materiału doszedłem do wniosku, że jeden artykuł nie wystarczy do szczegółowego przeglądu wszystkich metod wysyłania e-maili Laravel i pełnego wdrożenia jednego z nich.

Dlatego zdecydowałem się rozbić to, co zostało napisane na dwie części: pełny przegląd wszystkich sposobów wysyłania poczty Laravel, która czeka na ciebie dzisiaj, oraz implementację wysłania listu do jednego z nich z rzetelnym przeglądem metod fasady Laravel Mail.

Przepraszam tych, którzy ustawili się na wysyłanie poczty dzisiaj, ale myślę, że robię dobrze. Dziękuję też

Tak więc dzisiaj przyjrzymy się 5 podstawowym sposobom wysyłania wiadomości e-mail do Laravel i konfigurowania odpowiednich sterowników ramowych, i postaram się krótko opisać zalety i wady każdego z nich, a następnie wybrać najbardziej optymalny i wdrożyć go w następnej publikacji.

Chodźmy!

Cechy wysyłania poczty do Laravel

Od Laravela - Ramy PHP możesz wysłać e-mail w kodzie używając PHP za pomocą funkcji mail (). Możesz też ogólnie korzystać z aplikacji innych firm, takich jak sendmail, wdrażając je na swoim komputerze jako lokalny serwer pocztowy.

Metody te działają, są uniwersalne i elastyczne w dostosowywaniu, ale w tym przypadku ich zalety dobiegają końca. Pytanie brzmi: „Czego jeszcze potrzebujesz?” Answer Odpowiedź większości programistów będzie prosta - wygoda.

Na przykład chcesz ozdobić swój list, dodając tam znaczniki HTML i style CSS. Wysłanie takiej litery za pomocą PHP mail () będzie wyglądać mniej więcej tak:

<? php $ to = '[email protected]'; $ subject = 'Testuj e-mail z HTML'; $ message = '<html> <head> <title> Testowa litera HTML </ title> <meta charset = "utf8"> </ head> <body> <p> Przykładowa tabela </ p> <table> <tr > <th> Kolumna 1 </ th> <th> Kolumna 2 </ th> <th> Kolumna 3 </ th> <th> Kolumna 4 </ th> </ tr> <tr> <td> Komórka 1 < / td> <td> Komórka 2 </ td> <td> Komórka 3 </ td> <td> Komórka 4 </ td> </ tr> <tr> <td> Komórka 5 </ td> <td> Komórka 6 </ td> <td> Komórka 7 </ td> <td> Komórka 8 </ td> </ tr> </ table> </ body> </ html> '; $ headers [] = 'Wersja MIME: 1.0'; $ headers [] = 'Content-type: text / html; charset = utf8 '; $ headers [] = 'To: Receiver <[email protected]>'; $ headers [] = 'From: Sender <[email protected]>'; $ headers [] = 'DW: copy@test.com'; $ result = mail ($ to, $ subject, $ message, implode ("r n", $ headers)); echo $ wynik? „OK”: „Błąd”;

Jeśli korzystasz z interfejsu API Laravel, wysłanie tej samej wiadomości zajmie tylko kilka wierszy kodu:

Mail :: send ('emails.test', [], function ($ message) {$ m-> z ('[email protected]', 'Sender'); $ m-> to ('receiver @ test. com ',' Receiver ') -> subject (' Test email with HTML '); $ m-> cc (' [email protected] ',' ');});

Jedyny kod szablonu HTML zostanie umieszczony w oddzielnym pliku /resources/views/emails/test.blade.php, który jest określony jako pierwszy argument.

Ogólnie rzecz biorąc, jak dla mnie, ten przykład bardzo przekonująco pokazuje wygodę interfejsu API Laravel do wysyłania wiadomości e-mail.

Przy okazji, ta skala API w Laravel jest implementowana na podstawie popularnej biblioteki. Swiftmailer , który jest składnikiem frameworka PHP Symfony, z którego korzystają deweloperzy Laravel.

Dlatego jest on już dołączony do zestawu po wyjęciu z pudełka i nie ma potrzeby go umieszczać.

Jedynym minusem, jaki mogłem znaleźć podczas konfigurowania wysyłania poczty do Laravel za pośrednictwem jej API, jest czasami wiele kłopotów z ustawieniami i instalowaniem dodatkowych pakietów dla tej lub innej metody do działania. Ale to jest prywatny minus.

Istnieje znacznie więcej zalet w porównaniu z metodami natywnymi.

Po pierwsze, jest użyteczność.

Po drugie, wiele balsamów w postaci tworzenia specjalnych klas Mailable, które dają wygodę dla masowych wysyłek tego samego typu listów w różnych miejscach kodu.

Po trzecie, mechanizm kolejki Laravel umożliwia wysyłanie listów partiami w regularnych odstępach czasu, co zmniejsza obciążenie serwera i chroni zasoby przed zbanowaniem przez wyszukiwarki i usługi pocztowe w poszukiwaniu spamu.

Aby jednak skorzystać z tych zalet, będziesz musiał grać zgodnie z zasadami frameworka i wprowadzać ustawienia wysyłania poczty w określony sposób.

Ustawienia poczty Laravel

Mówię o użyciu specjalnych sterowników do różnych sposobów wysyłania e-maili do Laravel i eksperymentowania z plikami konfiguracyjnymi .env, /config/mail.php i /config/services.php.

Jeśli dalej będziemy mówić o sterownikach, zapoznamy się teraz ze strukturą plików.

Poza plikiem w pliku .env istnieje już specjalny blok zmiennych środowiskowych do wysyłania ustawień poczty. Są łatwo rozpoznawalne po prefiksie MAIL:

MAIL_DRIVER = smtp MAIL_HOST = smtp.mailtrap.io MAIL_PORT = 2525 MAIL_USERNAME = null MAIL_PASSWORD = null MAIL_ENCRYPTION = null

A co z /config/mail.php i /config/services.php?

Otwórz pierwszy z nich i co widzimy? Nie podam zawartości plików, ponieważ jest taki sam dla wszystkich po wyjęciu z pudełka - wystarczy otworzyć je na komputerze.

Praktycznie wszystkie domyślne parametry zawarte w nim pobierają wartości z pliku środowiska .env znajdującego się w katalogu głównym serwisu przy użyciu funkcji pomocniczej env () Laravel.

Jedynymi wyjątkami są:

'from' => ['address' => '[email protected]', 'name' => 'Example',],

Korzystając z tych parametrów, mamy możliwość określenia adresu e-mail i nazwy nadawcy dla wszystkich domyślnych listów wysyłanych z naszej strony Laravel.

Jeśli chodzi o pozostałe parametry z mail.php - zmienię je w moim pliku środowiska, ponieważ jeśli sam zmodyfikuję konfigurację, to moje ustawienia zostaną przesłane do wspólnego repozytorium i tylko cię znokautują.

Cóż, w pliku services.php sytuacja nie różni się zbytnio od mail.php: prawie wszystkie parametry pochodzą z .env.

Więc w przyszłości będę rządzić .env, a ty po prostu powtórz za mną. Nawiasem mówiąc, ponieważ różne zmienne ze standardowego zestawu będą wymagane do różnych sposobów wysyłania wiadomości e-mail do Laravel, po prostu usunę te, które mamy w .env z prefiksem MAIL, aby nie pomylić.

Jedynym wyjątkiem jest zmienna środowiskowa MAIL_ADMIN_EMAIL (jeśli, oczywiście, utworzysz stronę internetową we wszystkich dla tego kursu Laravel i już ją dodałeś), co jest potrzebne do określenia administratora poczty e-mail, aby wyświetlić go w komunikacie o błędzie w formularzu opinii.

Jedynym wyjątkiem jest zmienna środowiskowa MAIL_ADMIN_EMAIL (jeśli, oczywiście, utworzysz stronę internetową we wszystkich dla tego kursu Laravel i już ją dodałeś), co jest potrzebne do określenia administratora poczty e-mail, aby wyświetlić go w komunikacie o błędzie w formularzu opinii

Cóż, zajrzymy tylko do plików konfiguracyjnych mail.php i services.php, aby znaleźć nazwy niezbędnych zmiennych, aby je dodać lub edytować w .env.

W tej notatce zapoznamy się z przeglądem sposobów wysyłania poczty do Laravel i niezbędnych ustawień w tym zakresie, gdzie omówimy wszystkie powyższe szczegóły bardziej szczegółowo.

Wysyłanie listów do Laravel przez API usług pocztowych

Pierwszym sposobem wysłania wiadomości e-mail do Laravel, który postanowiłem rozważyć, jest korzystanie z różnych usług pocztowych za pośrednictwem ich API.

Wszystko, co musisz zrobić, aby go zaimplementować, to mieć konto Mailgun, Mandrill, SparkPost lub Amazon SES (w tej chwili Laravel obsługuje je tylko po wyjęciu z pudełka) i zainstalować niezbędny pakiet w celu wdrożenia kompatybilności usługi z Laravel.

Nawiasem mówiąc, jeśli nie jesteś tam zarejestrowany i nie chcesz być z nimi związany, proponuję natychmiast pominąć tę metodę i wypróbować następujące, bardziej uniwersalne.

Ustawienia Laravel Mailgun

Aby wysłać pocztę za pośrednictwem tej usługi, musisz najpierw zainstalować bibliotekę Laravel Guzzle HTTP w Laravel. Zrobimy to naturalnie Menedżer pakietów Composer .

Otwórz konsolę i przejdź do katalogu, w którym znajduje się nasz projekt Laravel. Uruchom następujące polecenie:

kompozytor wymaga guzzlehttp / guzzle

Konsola opisuje procedurę instalacji. Po pomyślnym zakończeniu, wszystko, co pozostaje nam do ukończenia, to dodanie pliku środowiska .env z następującym kodem:

MAIL_DRIVER = mailgun MAILGUN_DOMAIN = twoja_domena MAILGUN_SECRET = twój_klucz

Zmienne MAILGUN_DOMAIN i MAILGUN_SECRET muszą określać wartości uzyskane po zarejestrowaniu się w Mailgun, aby użyć jego API.

Ustawienia Laravel Mandrill

Aby skonfigurować wysyłanie poczty Laravel przez tę usługę, procedura będzie bardzo podobna do poprzedniej. Najpierw zainstaluj bibliotekę HTTP Guzzle.

A potem idziemy do Laravel .env i dodajemy:

MAIL_DRIVER = mandrill MANDRILL_SECRET = twój_klucz

Zmienna MANDRILL_SECRET musi określać wartość otrzymaną podczas rejestracji w Mandrill w celu korzystania z jej interfejsu API.

Przy okazji! Procedura konfigurowania Mandrill w oficjalnej dokumentacji Laravel została ostatnio opisana dla Laravel 5.2 , ale sądząc po kodzie silnika, korzystanie z tej usługi jest nadal dostępne (najwyraźniej postanowili zachować stare aplikacje).

Ponieważ z jakiegoś powodu twórcy Laravel postanowili zrezygnować z Mandrill w nowych wersjach frameworka, będziesz musiał trochę szturchnąć i dodać następujący blok do /config/services.php, aby pomyślnie wysłać e-maile:

'mandrill' => ['secret' => env ('MANDRILL_SECRET'),],

Skonfiguruj Laravel SparkPost

Wsparcie dla tej usługi, zgodnie z oficjalną dokumentacją, pojawiło się w Laravel 5.3. Dlatego, jeśli aplikacja używa wcześniejszej wersji frameworka, ta metoda nie będzie działać dla Ciebie. Zaktualizuj Laravel lub użyj innej metody (wystarczająco dobrej).

Aby pomyślnie używać SparkPost, potrzebujemy tej samej biblioteki HTTP Guzzle i następujących zmiennych środowiskowych w pliku .env:

MAIL_DRIVER = sparkpost SPARKPOST_SECRET = your_key

Skonfiguruj Laravel Amazon SES

Ta usługa pocztowa, jak SparkPost, pojawiła się w Laravel 5.3, by zastąpić Mandrilla. Dlatego, jeśli używasz wcześniejszej wersji silnika, powinieneś albo uaktualnić, albo użyć innego sposobu wysyłania wiadomości e-mail do Laravel.

Jego konfiguracja będzie się nieznacznie różnić od poprzednich usług pocztowych aby obsługiwać go w Laravel, nie potrzebujesz znajomej biblioteki HTTP Guzzle, ale innego pakietu - Amazon AWS SDK for PHP, który jest instalowany przez następujące polecenie w konsoli:

kompozytor wymaga aws / aws-sdk-php: 3. *

Po instalacji dodaj plik .env z następującymi zmiennymi środowiskowymi:

MAIL_DRIVER = ses SES_KEY = twój_klucz SES_SECRET = twój_sekret_klucz

Myślę, że jasne jest, że kluczowe wartości powinny być dostępne po rejestracji w Amazon SES. Przy okazji, nie zapomnij sprawdzić kodu swojego regionu wygenerowanego przez Amazon. Jeśli nie jest to „us-east-1”, przejdź do pliku /config/services.php i ustaw wymaganą wartość parametru „ses” [„region”].

Na tym kończy się przegląd usług pocztowych obsługiwanych przez API Laravel. Przejdź do przeglądu następnej metody wysyłania poczty.

Wysyłanie poczty do Laravel przez SMTP

Myślę, że wielu zdaje sobie sprawę z protokołu przesyłania poczty SMTP. Ponadto wiele osób wie, że prawie wszystkie nowoczesne usługi pocztowe zapewniają swoim serwerom SMTP wysyłanie poczty z witryn za ich pośrednictwem.

W rzeczywistości poprzednia metoda wysyłania poczty do Laravel za pośrednictwem usług pocztowych jest taka sama jak poprzednia. Jedynym wyjątkiem jest to, że w pierwszym przypadku wysyłamy listy za pośrednictwem usługi API, aw drugim - uzyskując bezpośredni dostęp do serwera poczty.

Cóż, podczas wysyłania za pośrednictwem SMTP możesz korzystać z dowolnej usługi pocztowej, która zapewnia taką możliwość (Gmail, Yandex Mail itp.) I wchodzić w interakcję z usługą API, masz tylko dostęp do ulubionych, które obsługuje Laravel. Taka jest różnica 🙂

Wszyscy użytkownicy muszą zrobić, aby skorzystać z możliwości wysyłania listów do Laravel przez SMTP, aby zarejestrować się w usłudze i dowiedzieć się ustawień połączenia z serwerem SMTP (adres serwera lub nazwa domeny, port, szyfrowanie itp.).

No i wprowadź je poprawnie do Laravela:

MAIL_DRIVER = smtp MAIL_HOST = smtp.gmail.com MAIL_PORT = 587 MAIL_USERNAME = twoja_nazwa_użytkownika MAIL_PASSWORD = twoje_hasło MAIL_ENCRYPTION = tls

Powyższe jest przykładem ustawień Laravel do wysyłania poczty przez serwer SMTP usługi e-mail Google - Gmail. Zdecydowałem się go wybrać, ponieważ prawie każdy ma skrzynkę pocztową gmail.com, więc ta metoda jest odpowiednia dla większości.

Laravel mail - wyślij za pomocą php mail ()

Pytanie brzmi: „Co to za nonsens?” :-). Dlaczego warto używać PHP mail () jako sterownika do wysyłania poczty, jeśli można bezpośrednio wywołać tę funkcję w kodzie? Odpowiedź jest taka sama jak wcześniej - dla wygody, ponieważ podczas korzystania ze sterownika mamy możliwość korzystania z interfejsu API Laravel do „pompowania” i wygodniejszego wysyłania listów.

Jaka jest kolejność konfiguracji?

Dla tej metody będzie najbardziej prymitywny. Wystarczy zachować następujący wiersz w pliku środowiska .env:

MAIL_DRIVER = poczta

Wysłanie listu do Laravel przez sendmail

Szczerze mówiąc, stosunkowo niedawno poznałem sendmaila. Dokładnie wtedy, gdy dowiedziałem się, że w Laravel można wysyłać wiadomości e-mail za pomocą tego utworu.

Dlatego pozwolę ci zrobić mały wpis tak samo jak ja o tym, czym jest sendmail.

Sendmail jak czyta Wikipedię - To jeden z najstarszych agentów wysyłających pocztę na poziomie systemu operacyjnego.
W tej chwili istnieją wersje tej aplikacji dla prawie wszystkich systemów operacyjnych i platform sprzętowych.

Prawie wszystkie systemy podobne do Uniksa są dostępne w standardzie. Aby uruchomić pod Windows, o ile widzę, musisz pobrać więcej.

Jest dystrybuowany bezpłatnie jako plik wykonywalny z konfiguracjami i kodem źródłowym. Tak więc, aby uruchomić sendmail, musisz uruchomić jego plik wykonywalny.

Aby najpierw wysłać pocztę do Laravel przy użyciu sendmaila, musisz określić odpowiedni sterownik w pliku środowiska .env:

MAIL_DRIVER = sendmail

A ponieważ wiadomość e-mail zostanie wysłana za pomocą narzędzia systemowego, struktura musi określić ścieżkę do pliku wykonywalnego. Aby to zrobić, konfiguracja /config/mail.php ma specjalny parametr, którego wartością jest ścieżka do sendmaila na serwerze (lub na komputerze lokalnym):

'sendmail' => '/ usr / sbin / sendmail -bs',

W tym przykładzie pokazano domyślny kod, który będzie działał na systemach uniksopodobnych.

Laravel mail - logowanie

W końcu zostawiłem recenzję sterownika wysyłającego pocztę w Laravel, z którym nie można wysyłać wiadomości e-mail. Ale świetnie nadaje się do debugowania procesu tworzenia i wysyłania listu.

Jest to możliwe dzięki zapisaniu dzienników Laravel w wygenerowanym tekście wiadomości e-mail, która jest zwykle wysyłana przez aplikację do skrzynki pocztowej użytkownika końcowego.

Aby włączyć tę funkcję w Laravel, musisz wykonać prymitywne ustawienie, jak w przypadku używania PHP mail (). Wystarczy podać sterownik do wysyłania poczty w .env:

MAIL_DRIVER = dziennik

W rezultacie, jeśli wiadomość zostanie pomyślnie wysłana, otrzymamy wpis w dziennikach o następującym formacie:

[2017-09-12 08:23:06] local.DEBUG: Message-ID: <[email protected]> Data: wt., 12 września 2017 08:23:06 +0000 Temat: Twój temat Od: Nadawca <odbiorca @ test.com> Do: Odbiorca <[email protected]> Wersja MIME: 1.0 Content-Type: text / plain; charset = utf-8 Content-Transfer-Encoding: quoted-printable Test

Przypominam, że podczas korzystania z tego sterownika wysyłanie listu do poczty użytkownika nie jest wykonywane, więc możesz użyć go tylko w rozwoju lokalnym, aby skonfigurować końcową wiadomość, aw żadnym wypadku w środowisku produkcyjnym.

Ponadto nagrywanie odbywa się w pliku dziennika Laravel /storage/logs/laravel.log, a nie w dziennikach serwera.

Wybierz najlepszy sposób wysyłania wiadomości e-mail do Laravel

Cóż, sprawdziliśmy wszystkie sterowniki do wysyłania poczty w Laravel, których użycie pozwala na wysyłanie wiadomości e-mail na różne sposoby.

Nadszedł czas, aby ocenić zalety i wady każdego z nich iw porównaniu z innymi, aby odkryć najbardziej optymalny do dalszego wykorzystania.

Tak więc w naszym programie wysyłamy e-maile za pośrednictwem usług pocztowych poprzez ich API, serwer SMTP, używając PHP mail () i sendmaila. Logowanie z oczywistych powodów nie uwzględnia metody wysyłania wiadomości e-mail, ponieważ nie jest wykonywane za pomocą sterownika dziennika. Jednak całkowite zignorowanie użycia tego sterownika również nie jest tego warte, ponieważ jest to poręczne narzędzie do debugowania i zaleca się korzystanie z niego przed wysłaniem poczty, aby nie przeciążać serwera, a usługi pocztowe nie blokują witryny jako generatora spamu.

Inną rzeczą jest to, że wpisy w dziennikach pozwolą ci śledzić sam fakt wysłania wiadomości e-mail i błędy, które wystąpią podczas wykonywania tej czynności, ale nie pomoże to w żaden sposób poprawić układu szablonu listu. Ale w tym celu Laravel ma poręczne narzędzie do podglądu liter w przeglądarce, które na pewno omówimy później.

Jaki jest sposób wysyłania listów do Laravel, abyśmy mogli wybrać?

Wysyłanie wiadomości e-mail do Laravel za pośrednictwem usług poczty elektronicznej przy użyciu interfejsu API i poprzez serwer SMTP jest zasadniczo tym samym, ponieważ w obu przypadkach litery będą wysyłane nie z serwera, na którym znajduje się witryna, ale od strony trzeciej. Jedyną różnicą jest kolejność interakcji. W pierwszym przypadku komunikujesz się z usługą pocztową za pomocą specjalnych metod API, aw drugim wysyłasz do serwera żądanie wysłania poczty.

Tak więc, korzystając z API, lista możliwości, które możesz mieć, jest nieco szersza niż przy wysyłaniu wiadomości e-mail przez SMTP. Ale przynajmniej dzięki standardowemu użyciu interfejsu API Laravel do wysyłania listów i biblioteki SwiftMailer nie będziemy odczuwać tych możliwości.

Ponadto, według niektórych deweloperów, podczas wysyłania wiadomości e-mail za pośrednictwem serwera SMTP adres IP jest rejestrowany, z którego uzyskuje się dostęp do serwera, co w niektórych przypadkach może być niepożądane.

Podczas pracy z interfejsem API szybkość interakcji może być nieco wyższa niż w przypadku korzystania z serwerów SMTP. Przynajmniej tak twierdzi mailgun . I jak to naprawdę jest - szczerze mówiąc, nie sprawdziłem tego 🙂 Więc jeśli masz bardziej dokładne i kompletne informacje na ten temat, podziel się nim z komentarzami.

Jeśli chodzi o użycie PHP mail () i sendmaila - te, jak i poprzednie, są dość podobne. Ich podstrona jest wysyłana na serwer, na którym się znajduje. Pozostałe różnice dotyczą subiektywnej wygody konfiguracji, zużycia zasobów serwera itp.

Ale, jak dla mnie, te rozbieżności są tak małe, że mają tendencję do zera, więc nie będę ich opisywać. Co więcej, wielu z nich po prostu usuwa Laravel, używając swojego API do konfigurowania i używania wymienionych metod.

Jeśli nagle zapomniałem o czymś fundamentalnie ważnym - popraw mnie w komentarzach pod artykułem.

Listy wysyłkowe do Laravel na serwerze aplikacji lub za pośrednictwem strony trzeciej?

Nasze cztery główne sposoby wysyłania listów do Laravela zostały podzielone na dwie grupy, z których główną różnicą jest podejście do wysyłania poczty.

Pierwszym było korzystanie z usług pocztowych za pośrednictwem IPA i ich serwerów SMTP, a drugim była obsługa PHP mail () i sendmaila. W obrębie grup różnice między metodami są nieistotne, ale porównując grupy jako całość, jest coś do powiedzenia.

Niezaprzeczalne zalety wysyłania wiadomości e-mail na serwer aplikacji (serwer, na którym uruchomiona jest aplikacja / witryna) za pośrednictwem osób trzecich można przypisać nieograniczonej liczbie wysyłanych wiadomości (mogą być one ograniczone tylko przez możliwości serwera i plan hostingowy). Ale jednocześnie część liter (jeśli nie wszystkie) wpada do folderu „Spam” na kliencie pocztowym, dlatego szanse, że odbiorca zapozna się z twoją korespondencją na czas, są katastrofalnie skąpe.

Tak przynajmniej piszą, odnosząc się do serwerów zmieniających nagłówki żądań przed wysłaniem. Chociaż osobiście używam PHP mail (), nie miałem takich sytuacji z powodu poprawnego wskazania nagłówków w kodzie.

Cóż, kolejną wadą wysyłania poczty z serwera aplikacji jest zużycie zasobów serwera, co może być znaczącą wadą przy korzystaniu z hostingu wirtualnego i dużych ilości wiadomości e-mail.

Jeśli mówimy o drugiej grupie sposobów wysyłania listów do Laravel (używając API i serwerów SMTP usług pocztowych), to oni mają teraz najważniejszy moment, ponieważ listy są wysyłane do serwerów stron trzecich, tj. ich zasoby są wydawane, a nie twoje. Ale ciągle będziesz opierał się na ograniczeniach, ponieważ przy korzystaniu z bezpłatnych taryf liczba e-maili jest ograniczona i waha się od 10 000 miesięcznie dla MailGun, kończąc na 60 000 z Gmaila i Amazon SES.

Nawiasem mówiąc, niektóre usługi pocztowe w ogóle nie mają darmowych taryf, jak na przykład SparkPost. Oczywiście, będziesz mieć pewność innych zalet korzystania z usług pocztowych, które stają się dostępne na kontach premium ... Nie zdziwiłbym się, gdyby okazało się, że mity spamujące w PHP mail () są wymyślone przez nich

Wszystko może być ... Konieczne jest, aby jakoś istnieli i konkurowali nie tylko ze sobą, ale także z wolnymi analogami. Ale nie zamierzam już kontynuować tej rozmowy, ponieważ ani pierwszy, ani drugi nie płacą mi za reklamę 🙂

Wróćmy do rzeczywistych i obiektywnych cech. I tutaj chcę powiedzieć, że nawet jeśli zamkniemy oczy na sztuczne ograniczenia liczby listów, wysyłanie poczty za pośrednictwem usługi innej firmy ma wiele wad. Jedną z najważniejszych jest podjęcie dłuższej procedury wysyłania wiadomości e-mail, w szczególności za pośrednictwem SMTP Gmail, co zauważyłem w praktyce.

Cóż, osądźcie sami: jeśli wysłać list na serwer aplikacji, musicie wysłać lokalne żądanie i uzyskać od niego odpowiedź, a kiedy korzystacie z usług innych firm, ich serwery mogą znajdować się w innym kraju, a nawet na innym kontynencie (prawie napisałem planetę :-)) gdzie żądanie i odpowiedź na nie będą znacznie dłuższe niż pierwsza opcja.

Dodaj do tego czas oczekiwania na kolejkę (nie jesteś jedyną obsługującą!) I samo przetwarzanie żądania. Myślę, że jasne jest, o czym mówię 🙂

Możliwe, że podczas wysyłania wiadomości w porcjach, czas żądania do serwera lokalnego i serwera zdalnego będzie w przybliżeniu równy, ale podczas wysyłania pojedynczych wiadomości usługi pocztowe tracą PHP mail (), sendmail i inne lokalne środki wysyłania wiadomości.

Tak, podczas tej akcji wydawane są zasoby serwerów innych firm, ale ten plus musi zostać zapłacony z czasem.

Niemniej jednak wysyłanie wiadomości e-mail za pośrednictwem serwera usług pocztowych API i SMTP jest nadal bardzo popularne wśród programistów i klientów. Co więcej, duże części listów (masowe wysyłki) są często produkowane w tle, a jednocześnie nie ma znaczenia, jak długo trwają. Jednak w przypadku dużych projektów, w których zasoby serwera są zapisywane do limitu z powodu dużej liczby wykonywanych zadań, możliwość przeniesienia części procesu do zewnętrznego zasobu jest bardzo atrakcyjna i rozsądna.

Dlatego, w oparciu o te rozważania, w dalszym rozwoju będę używał wysyłania poczty do Laravel poprzez usługi pocztowe osób trzecich. Lub raczej przez SMTP Gmail. Dlaczego w ten sposób? Ponieważ mam już konto skonfigurowane do korzystania z serwera SMTP, ale nie mam żadnych innych e-maili i jestem zbyt leniwy, aby go utworzyć one

To absolutnie nie oznacza, że ​​ta metoda jest doskonała (sami mogli zobaczyć, ile minusów był w stanie znaleźć). Nawet tytuł dotyczący wyboru najbardziej optymalnego sposobu wysyłania poczty do Laravel nie jest całkowicie poprawny, ale musisz w jakiś sposób zainteresować się czytaniem całego materiału ecially Zwłaszcza, że ​​teraz zapoznałeś się z mocnymi i słabymi stronami każdego podejścia i możesz samodzielnie wybrać to, co bardziej podobny lub odpowiedni w konkretnej sytuacji.

Na tym dzisiejszym artykule z opisem sposobu wysyłania poczty w Laravel dobiega końca. Mam nadzieję, że teraz rozumiesz moje pragnienie podzielenia się teorią i praktyką wdrażania wysyłania e-maili do Laravela do różnych publikacji, ponieważ jeden artykuł o tym wszystkim byłby po prostu ogromny, a ty nie przeczytałeśby połowy tego ... A więc istnieje nędzna szansa, że ​​doszedłeś do tych linii 🙂 Jeśli tak, to lubisz pod tym artykułem.

Cóż, zamierzam poświęcić następną publikację wdrożeniu wysyłania wiadomości e-mail za pośrednictwem interfejsu API Laravel, dla którego użyję metod Mail Mail i szczegółowo opiszę jego możliwości. Pozostałe funkcje API będą rozpatrywane dalej, gdy będziemy mieli stronę gotową do pracy. Tak, a może nie wszyscy będą tego chcieli ...

Wszystko. Napisz swoją opinię w komentarzach i nie zapomnij dołączyć do społeczności. Akceptowane są również twoje sugestie dotyczące nowych artykułów o rzeczach, które będą Cię interesować.

Czy zobaczenia wkrótce!

PS : jeśli potrzebujesz strony internetowej lub musisz wprowadzić zmiany do istniejącej usługi.

Ponad 5 lat doświadczenia w przeglądaniu stron internetowych. Współpracuj z technologiami PHP , OpenCart , WordPress , Laravel , Yii , MySQL , PostgreSQL , JavaScript , React , Angular i innymi.

Doświadczenie w projektach na różne rodzaje: lądowań , witryn korporacyjnych , sklepów internetowych , CRM , portali . W tym wsparciu i rozwoju projektów HighLoad . Wyślij swoją aplikację e-mailem [email protected] .

Nie zapomnij Podział się zers

Pytanie brzmi: „Czego jeszcze potrzebujesz?
Com'; $ result = mail ($ to, $ subject, $ message, implode ("r n", $ headers)); echo $ wynik?
Php?
Otwórz pierwszy z nich i co widzimy?
Dlaczego warto używać PHP mail () jako sterownika do wysyłania poczty, jeśli można bezpośrednio wywołać tę funkcję w kodzie?
Jaka jest kolejność konfiguracji?
Jaki jest sposób wysyłania listów do Laravel, abyśmy mogli wybrać?
Listy wysyłkowe do Laravel na serwerze aplikacji lub za pośrednictwem strony trzeciej?
Dlaczego w ten sposób?