PrestaShop 9 nie wysyła e-maili przez SMTP: błąd portu 587

Narzędzia · 6 min czytania

PrestaShop 9 nie wysyła e-maili przez SMTP: błąd portu 587

Poniedziałek rano. Klient pisze z pytaniem, czy jego sobotnie zamówienie dotarło, bo nic nie dostał. Otwierasz panel i jest, opłacone. Niedzielne też, i wszystkie zamówienia z całego tygodnia. Twój sklep sprzedaje, ale odkąd przeszedłeś na PrestaShop 9, ani jeden e-mail do nikogo nie dotarł.

Jeśli wysyłasz przez własny serwer poczty — OVH, Microsoft 365, Gmail albo serwer Twojego hostingu — na porcie 587, niczego źle nie ustawiłeś. To błąd PrestaShop 9 obecny we wszystkich wersjach od 9.0.0 do 9.1.5, naprawiony dopiero w 9.2, wydanej 30 września 2026.

Jak sprawdzić, czy to Twój problem?

Wejdź w Zaawansowane → Logi. Jeśli każde zamówienie zostawiło linię taką jak ta, to Twój przypadek:

Mailer Error: Connection could not be
established with host
"ssl://ssl0.ovh.net:587":
stream_socket_client(): SSL operation
failed with code 1. OpenSSL Error
messages: error:0A00010B:SSL
routines::wrong version number

Nazwa serwera będzie Twoja. Błąd zdradza ssl:// z przodu i :587 na końcu. Ten sam komunikat dostaniesz od razu, jeśli klikniesz „Wyślij wiadomość testową” w Zaawansowane → Adres e-mail.

Najgorsze jest wszystko to, co się nie dzieje. Klient nie widzi błędu, zamówienie się zapisuje, a płatność przechodzi. Dlatego zauważenie tego trwa całe dni i prawie zawsze mówi Ci o tym klient, pytając o fakturę albo numer przesyłki.

Co się zmieniło w PrestaShop 9?

Są dwa sposoby szyfrowania rozmowy z serwerem poczty. W jednym wszystko jest szyfrowane od pierwszej sekundy i tego oczekuje port 465. W drugim najpierw mówi się „dzień dobry” bez szyfrowania, a potem prosi o przejście na rozmowę szyfrowaną: to port 587. To dwoje różnych drzwi i każde oczekuje, że zapukasz po swojemu.

Do PrestaShop 8 opcja „TLS” w panelu pukała do drzwi 587 tak, jak te drzwi oczekują. PrestaShop 9 wymienił komponent, którym wysyła e-maile (ze SwiftMailer na Symfony Mailer), i przy okazji zmienił działanie tej opcji: „TLS” szyfruje teraz od pierwszej sekundy. Puka do 587 tak, jakby to był 465, serwer odpowiada zwykłym „dzień dobry”, a PrestaShop, który czekał na zaszyfrowaną odpowiedź, nie umie jej zrozumieć. To właśnie jest „wrong version number”.

Dlatego psuje się dokładnie przy przejściu z 8 na 9: te same ustawienia, które działały, przestają działać, choć niczego nie ruszałeś. I dlatego zniknęła opcja „SSL”, którą miałeś wcześniej: w PrestaShop 9 lista szyfrowania oferuje tylko „Żaden” i „TLS”.

Jak to naprawić dziś, bez ruszania kodu?

Zmieniasz to w Zaawansowane → Adres e-mail, z zaznaczoną opcją „Użyj własnych ustawień SMTP (tylko dla zaawansowanych)”. Co wpisać, zależy od portów, które akceptuje Twój dostawca, a my sprawdziliśmy je jeden po drugim na serwerach jedenastu dostawców:

  • Jeśli Twój dostawca akceptuje port 465 — poczta w hostingu OVH (MX Plan, ssl0.ovh.net), Gmail, IONOS, Hostinger, Brevo czy Mailjet —: szyfrowanie TLS i port 465. Tak jest ustawiony nasz własny sklep, a działa na PrestaShop 9.
  • Jeśli Twój dostawca akceptuje tylko port 587 — Microsoft 365 (smtp.office365.com), OVH Email Pro (pro1, pro2 lub pro3.mail.ovh.net) i OVH Exchange —: szyfrowanie Żaden i port 587. U tych dostawców, w wersjach 9.0 i 9.1, „TLS” nie działa na żadnym porcie.

Wiemy, że ta druga opcja wydaje się zła, bo mówi „Żaden”. Ale to nie znaczy, że Twoje hasło leci otwartym tekstem. Z tą opcją PrestaShop 9 mówi „dzień dobry” bez szyfrowania, a gdy tylko serwer zaproponuje szyfrowanie — a wszystkie te serwery to robią — szyfruje rozmowę, zanim wyśle użytkownika i hasło. Sprawdziliśmy to na serwerach Microsoft 365 i OVH: połączenie jest szyfrowane (TLS 1.3 w Microsoft, TLS 1.2 w OVH), zanim wyjdą jakiekolwiek dane.

Zapisz, wyślij testowy e-mail i, jeśli dotrze, gotowe: zamówienia złożone od teraz wysyłają swoje e-maile. Te, które utknęły po drodze, nie wyślą się same. Na stronie każdego zamówienia, w historii statusów, przycisk „Wyślij ponownie e-mail” wysyła jeszcze raz e-mail danego statusu, na przykład płatność przyjęta albo zamówienie wysłane.

Pułapka, jeśli przechodzisz z PrestaShop 8 z SSL

Jeśli w PrestaShop 8 miałeś wybrane „SSL” z portem 465, po aktualizacji e-maile dalej wychodzą: PrestaShop 9 zachowuje tę wartość i traktuje ją jak swoje „TLS”. Problem pojawia się w dniu, w którym otworzysz tę stronę i klikniesz „Zapisz”, nawet żeby zmienić coś innego. Ponieważ „SSL” nie ma już na liście, panel pokazuje „Żaden” i to właśnie się zapisuje. Z „Żaden” i portem 465 sklep czeka na odpowiedź, która nigdy nie przychodzi, a log mówi Connection to "…:465" timed out.

Odtworzyliśmy to w naszym sklepie testowym. Zanim zapiszesz cokolwiek na tej stronie, sprawdź, czy szyfrowanie mówi to, co chcesz.

A w PrestaShop 9.2?

Wersja 9.2 naprawia to porządnie: „TLS” znowu działa na porcie 587, jak w PrestaShop 8. To zmiana 42197 w projekcie, która zamyka zgłoszenie otwarte w sierpniu 2024. Nie weszła do 9.1.5, ostatniej z linii 9.1: jeśli masz którąkolwiek wersję 9.0 lub 9.1, masz ten błąd.

Cokolwiek ustawisz dziś według tego artykułu, będzie działać po aktualizacji — „TLS” z 465 i „Żaden” z 587 wysyłają tak samo w 9.2 — więc nie ma czego cofać. Napraw pocztę teraz, a aktualizuj, kiedy Ci pasuje, bez pośpiechu: 9.2 przynosi duże zmiany, takie jak nowy proces zamówienia na jednej stronie, a Twoje moduły płatności i wysyłki muszą być na to gotowe. Taką aktualizację testuje się najpierw na kopii sklepu.

Jeśli wysyłasz przez Microsoft 365, zaznacz sobie grudzień

Microsoft zapowiedział, że pod koniec grudnia 2026 domyślnie wyłączy wysyłanie z aplikacji na nazwę użytkownika i hasło, czyli dokładnie tak, jak wysyła PrestaShop. Administrator Twojego konta Microsoft będzie mógł to włączyć z powrotem, a ostateczna data usunięcia zostanie ogłoszona w drugiej połowie 2027 roku. Jeśli Twój sklep wysyła e-maile przez Microsoft 365, to dobry moment, żeby przenieść go na usługę e-maili transakcyjnych, taką jak Brevo czy Mailjet, i mieć tę datę z głowy.

Nadal nie wysyła?

Log mówi Ci, gdzie szukać dalej. Jeśli pisze Failed to authenticate, chodzi o użytkownika albo hasło: użytkownik to zawsze pełny adres, a w Microsoft 365 skrzynka musi mieć włączony uwierzytelniony SMTP. Jeśli pisze timed out, albo ten port nie istnieje u Twojego dostawcy — Microsoft 365 i OVH Email Pro nie mają 465 — albo złapała Cię pułapka z listą, albo Twój hosting nie wypuszcza ruchu na tym porcie.

A jeśli wolisz, żeby przyjrzał się temu ktoś, kto już to rozwiązał, wyślij nam komunikat z logu i swoją wersję PrestaShop. Powiemy Ci, co ustawić w Twoim przypadku, a jeśli kryje się za tym coś jeszcze, sprawimy, że zadziała.

Kiedy Twoje e-maile znowu wychodzą, niech będą warte otwarcia: o tym pisaliśmy w tekście potwierdzenie zamówienia to najgorsza strona Twojego sklepu.

Opowiedz nam o swoim przypadku

W czym możemy pomóc

Zobacz wszystkie usługi →

Czytaj dalej

Potrzebujesz pomocy przy swoim projekcie? Porozmawiajmy

Powiedz nam, czego potrzebuje Twoja firma

Moduł, aplikacja, serwer, który sprawia problemy, albo coś pilnego. Odpowiadamy w ciągu 24 godzin, ze stałą wyceną: cena i termin.