gdy wysyłasz jedną wiadomość e-mail, nadawca współdziała z odbiorcą w tym samym czasie. Ale gdy masz do czynienia z Transakcyjnymi wiadomościami e-mail lub masowymi wiadomościami e-mail w aplikacji, nie wszystkie mogą być wysyłane w tym samym czasie. Wiadomości e-mail są umieszczane w kolejce SMTP, która zapewnia tymczasowe przechowywanie przed przetworzeniem. Gdy odbiorca może odbierać wiadomości e-mail, są one wysyłane. W tym miejscu dowiemy się, dlaczego zdecydowałeś się na kolejkowanie wiadomości e-mail w swojej aplikacji i jak to zrobić.
co to jest kolejka e-mail?
Kolejka wiadomości e-mail jest obowiązkowym składnikiem serwerów SMTP. Jest to system, który tworzy tablicę wiadomości e-mail, które czekają na przetworzenie do dostarczenia. Kolejkowanie wiadomości e – mail jest formą kolejkowania wiadomości-asynchroniczną komunikacją service-to-service. Kolejka komunikatów ma na celu oddzielenie procesu produkcyjnego od procesu konsumującego. Kolejka wiadomości e-mail oddziela nadawcę od odbiorcy. Pozwala im komunikować się bez połączenia. W związku z tym wiadomości e-mail w kolejce czekają na przetworzenie, aż odbiorca będzie mógł je odebrać.
możesz spojrzeć na kolejkę wiadomości e-mail jako bufor, w którym wiadomości e-mail są przechowywane, zanim dotrą do punktu końcowego. Jednocześnie nadawca nie musi wysyłać każdej wiadomości osobno. Komunikacja między nadawcą a odbiorcą jest asynchroniczna. Po zapytaniu e-maili są one dostarczane krok po kroku. Zazwyczaj serwer SMTP rozpoczyna się od początku kolejki i przechodzi do przodu.
jak działają kolejki e-mail
Załóżmy, że uruchamiasz kampanię e-mailową, która zawiera 100 odbiorców. Klient poczty e-mail wchodzi w interakcję z serwerem SMTP, aby wysłać wiadomość. Serwer z kolei współdziała z serwerami SMTP na hostach odbiorców, aby przekazać wiadomość e-mail. Ponieważ wysyłasz 100 wiadomości e-mail, serwer SMTP na Twoim hoście umieszcza je w kolejce. Większość serwerów pocztowych używa agenta przesyłania poczty (MTA) o nazwie sendmail do faktycznego wysyłania. W następnej sekcji omówimy różnice między tymi dwoma terminami. MTA będzie okresowo wysyłać wszystkie wiadomości w kolejce do zakończenia. Jeśli serwer SMTP odbiorcy nie odpowiada, sendmail będzie ponownie wysyłać wiadomości e-mail. W takim przypadku Kolejka wiadomości e-mail zamienia się w kolejkę sendmail. Zazwyczaj klient poczty zostanie powiadomiony o tego rodzaju problemie. Jeśli kolejka sendmail nie zostanie dostarczona w określonym czasie (na przykład w ciągu pięciu dni), wiadomość e-mail zostanie zwrócona.
– serwer pocztowy system komputerowy wysyłający i odbierający wiadomości elektroniczne za pomocą protokołów poczty elektronicznej. Aby poznać różnicę między protokołami e-mail, zapoznaj się z wpisem na blogu: SMTP vs.IMAP vs. POP3.
– serwer SMTP jest częścią serwera pocztowego, który obsługuje pocztę wychodzącą. To tam kolejkowanie wiadomości e-mail jest najczęściej realizowane.
– mail transfer agent lub MTA jest specyficznym rodzajem oprogramowania, które kolejkuje pocztę i przenosi ją wzdłuż łańcucha dostaw, aż trafi do Agenta dostarczania poczty (MDA).
dlaczego kolejki e-mail są zatkane i jak to naprawić
podczas masowych wysyłek serwer SMTP automatycznie umieszcza wiadomości wychodzące w kolejce e-mail. Są one wysyłane jeden po drugim z tego bufora. Jest to regularny proces, który jest bardzo korzystny dla kampanii e-mailowych. W tym samym czasie kolejkowane wiadomości e-mail mogą stać się problemem, gdy czekają na wysłanie przez nienormalnie długi czas (zależy od używanej usługi). Kolejki wiadomości e-mail nie będą odbijane. I tak zostaną wysłane, ale czas dostawy może zostać znacznie skrócony. I oto dwa główne powody tego:
przekroczono liczbę wiadomości e-mail
niektórzy dostawcy skrzynek pocztowych (głównie najwięksi, tacy jak Gmail lub Yahoo) wymuszają limity szybkości wysyłania wiadomości e-mail na adresach IP. Limity są oparte na reputacji nadawcy. Jeśli przekroczysz tę liczbę i ustawisz w kolejce zbyt wiele wiadomości e-mail, prędkość dostawy spadnie. Możesz również osiągnąć maksymalny rozmiar załącznika e-mail, który może być również czynnikiem hamującym. Jedynym rozwiązaniem jest kontakt z serwerem przychodzącym tak często, jak to możliwe, aby przesunąć kolejkę. Gdy IP przekracza limit wiadomości e-mail, serwer SMTP odpowiada kodem błędu (na przykład 421) na dowolną komendę. Więcej na temat komend SMTP i kodów odpowiedzi możesz przeczytać w naszym poście na blogu. Zaleca się również wybór dedykowanego adresu IP zamiast opcji współdzielonej, aby zmaksymalizować szybkość przepływu wiadomości e-mail.
problemy związane ze spamem
Innym częstym powodem jest to, że twój e-mail został zepsuty przez filtry antyspamowe. Nie panikuj! Filtry pozwolą e-maile stopniowo przesyłać, aby przeanalizować, jak reszta odbiorców reaguje na wiadomość. Jeśli postęp jest powolny, to jest w porządku. Twoja kampania e-mailowa jest obserwowana i oceniana. Jeśli jest zablokowany, mogą być różne przyczyny, w tym zablokowanie twojego adresu IP. W takim przypadku musisz odłączyć się od listy i zoptymalizować kampanię e-mailową. Przeczytaj nasz wpis na blogu o tym, jak uniknąć spamu e-maili.
poza tymi podstawowymi przyczynami, kolejka może zostać zapchana z innych powodów, które powinieneś ustalić z dostawcą poczty.
zarządzanie kolejkami wiadomości e-mail
zarządzanie kolejką wiadomości e-mail jest łatwym zadaniem, jeśli używasz Panelu sterowania serwera, takiego jak cPanel. Zapewnia WebHostManager (WHM) do obsługi wielu rzeczy. A jeśli nie? Ponieważ nie mamy pojęcia, z którego serwera pocztowego korzystasz, sprawdźmy komendy dla najczęściej używanych agentów przesyłania poczty: Postfix i Exim.
Command | Postfix | Exim |
List the queued emails | postqueue -p |
exim -bp |
Reattempt delivery of all queued emails | postqueue -f |
exim -q -v |
Remove all queued emails | postsuper -d ALL |
exiqgrep -z -i | xargs exim -Mrm |
Remove a particular queued email | postsuper -d "Queue ID”postsuper -d <message-id> |
exim -Mrm <message-id> |
kolejkowanie wiadomości e-mail w aplikacji
zwykle serwery SMTP mają wbudowany system zarządzania kolejkami. Jest to opcja, jeśli Twoja kampania e-mailowa ma setki odbiorców. Ale czasami lepiej jest mieć kolejkę wiadomości e-mail bezpośrednio w aplikacji. Oto kilka przypadków, gdy jest to korzystne:
- Jeśli użytkownik wykonuje akcje asynchroniczne, takie jak wysyłanie powiadomień do 1000 kontaktów, byłoby to naprawdę powolne bez użycia kolejki lub zadania w tle.
- Jeśli Twoja aplikacja śledzi, powiedzmy, limit megabajtów miesięcznie i chcesz wysłać powiadomienie o zasięgu limitu 70%/80%/90%. Może się to zdarzyć szybko w przypadku dużego użycia, więc kolejka jest potrzebna, aby wysłać tylko jeden e-mail do jednego użytkownika, zamiast wysyłać trzy e-maile na zdarzenie.
- Jeśli potrzebujesz wysłać więcej niż 10 000 e-maili transakcyjnych lub masowych każdego dnia.
Kolejka SMTP może nie wystarczyć do obsługi tych zadań. Dlatego powinieneś zdecydować się na udoskonaloną architekturę wysyłania wiadomości e-mail. Jest on oparty na asynchronicznym systemie wysyłania maili, który kolejkuje wiadomości zanim dotrą do serwera pocztowego. W ten sposób może to wyglądać na wyższym poziomie:
tutaj możesz zobaczyć trzy główne procesy:
pracownicy rozwijający implementują masowe żądania wiadomości e-mail przechowywanych w bazie danych
Jeśli ta sama wiadomość e-mail ma być dostarczona do wielu odbiorców, worker rozszerza zbiorcze żądania dla każdego odbiorcy. Spowoduje to wypchnięcie wiadomości e-mail do kolejki wiadomości e-mail.
kolejkowanie wiadomości e-mail jest realizowane poprzez system kolejkowania wiadomości e-mail
nie jest kolejką SMTP. Wiadomości e-mail są umieszczane w kolejce, ale nie na serwerze pocztowym. Bez kolejki aplikacja będzie próbowała wysyłać tysiące wiadomości e-mail naraz. W rezultacie brak pamięci lub czasu na przetworzenie żądania spowodowałby awarię. Gdy używasz systemu kolejkowania wiadomości e-mail, takiego jak ActiveMQ lub RabbitMQ, wiadomości e-mail są ustawiane w kolejce i przetwarzane partiami.
worker wysyłający pocztę wysyła kolejkowane wiadomości e-mail do serwera pocztowego
ten worker pobiera wiadomości e-mail z kolejki i wysyła je do serwera pocztowego. Jeśli odpowiedź serwera jest negatywna, wiadomość e-mail jest wypychana do kolejki błędów, która albo wyśle ją później, albo anuluje dostawę. To do ciebie, aby ustawić scenariusz. Pomyślnie dostarczone wiadomości e-mail mogą być archiwizowane.
Przetestuj swój system kolejkowania wiadomości e-mail za pomocą fałszywego serwera SMTP
Po skonfigurowaniu tej zaawansowanej architektury wysyłania wiadomości e-mail nie zapomnij jej przetestować. Fałszywy serwer SMTP, taki jak Mailtrap, jest idealnym narzędziem do tego. Nie jest to narzędzie do testowania serwera SMTP. Nie będzie więc można go używać do testowania kolejkowania wiadomości e-mail SMTP. Ale jeśli masz kolejkę wiadomości e-mail zaimplementowaną przed serwerem poczty, można użyć Mailtrap. Zapewnia wszystkie niezbędne poświadczenia, takie jak port, metoda uwierzytelniania i tak dalej. Ponadto możesz skorzystać z gotowych do użycia integracji dla większości popularnych stosów technologicznych. Wystarczy skopiować fragment kodu i wkleić go do aplikacji.
rozpocznij testowanie
Failsafe to kolejna zaleta używania fałszywego serwera SMTP. Twoje e-maile transakcyjne lub marketingowe zostaną przesłane na fałszywy serwer POP3. Wyklucza to spam dla prawdziwych użytkowników. Ponadto unikasz problemów związanych z niewłaściwą konfiguracją, uwierzytelnianiem i tak dalej. W końcu, jeśli Twoja aplikacja działa dobrze, zobaczysz swój e-mail w skrzynce odbiorczej Demo.
więc najważniejsze jest to, że kolejka ma dwie strony medalu. Pierwsza jest pozytywna. Kolejkowanie wiadomości e-mail i SMTP rozdziela procesy wysyłania i odbierania wiadomości e-mail. Jest to przydatne w przypadku wysyłek masowych lub masowych. Negatywną stroną jest to, że zaszeregowana wiadomość e-mail często wiąże się z jakąś awarią, która opóźnia wysyłanie wiadomości. Jednocześnie teraz wiesz, jak radzić sobie z tymi problemami i co najwyżej skorzystać z kolejkowania wiadomości e-mail.
Jeśli podobał Ci się ten artykuł, podziel się nim i rozpowszechnij. Będziemy bardzo wdzięczni.