Poniższy wpis dot. starszych wersji PrestaShop, ponieważ wiele osób nadal korzysta z poprzednich wersji oprogramowania przedstawiamy sposób rozwiązania problemu z nie wysyłaniem maili w oprogramowaniu Presta

Funkcja mail() w PrestaShop

Ponieważ wiele osób ma problem z wysyłaniem maili z presty poprzez funkcję mail() chciałam naświetlić problem i przedstawić jego rozwiązanie.

Dlaczego funkcja mail() w PrestaShop nie działa na wszystkich serwerach? Jest to spowodowane tym że skrypt modyfikuje nagłówek „FROM” i jeżeli serwer poczty wychodzącej nie jest na tym samym serwerze co Twoja usługa HTTP/FTP to bardzo prawdopodobne, że taki mail zostanie odrzucony.

Rozwiązaniem tego problemu dla wysyłania poprzez funkcję mail() jest notatka pod adresem poniżej: http://www.presto-changeo.com/en/content/9-fix-email-problems

Tłumaczenie powyższego rozwiązania

W pliku tools/swift/Swift/Message.php w lini 79 zamieniamy

$this->setFrom("");

na

$this->setFrom("youremail@yourdomainname.com");

W pliku tools/swift/Swift.php after linia 370 poniżej linii:

if (!($has_reply_to = $message->getReplyTo())) $message->setReplyTo($from);

Dodajemy kod

if (!$has_reply_to[0])

$message->setReplyTo($from->getAddress());

Jeżeli nie zadziała spróbuj dodać w pliku /tools/swift/Swift/Plugin/MailSend.php w linii 159

$params = "";

Najlepsze rozwiązanie

Jednak nie polecam powyższej metody z dwóch powodów: 1. Ingerencja w kod skryptu co powoduje, że czynność będzie trzeba powtórzyć po aktualizacji 2. Funkcja daje większe możliwości, zaś wysłana poczta poprzez SMTP posiada dokładny ślad w systemie i jest bardziej wiarygodną dla odbiorcy a więc i zatem kupującego niż poprzez funkcję mail()

Dlaczego nie działa funkcja SMTP? Ponieważ w większości przypadków jest ona źle skonfigurowana:

Pole: Pełna nazwa kwalifikowana domeny powinno być w 99% przypadków puste

Adres serwera SMTP: nie można wpisywać po prostu adres swojej domeny – nie zawsze to zadziała. Adres serwera SMTP uzyskasz od firmy która obsługuję Twoją pocztę. Jako przykład: Serwery Wirtualne w hostit.pl mają SMTP o adresie poczta.hostit.pl natomiast zarządzane serwery VPS i zarządzane serwery dedykowane zupełnie inny.

Pamiętaj, że testowanie wysyłania maila z panelu administratora nie zadziała, jeśli pole hasło będzie puste w momencie testu. Dlatego gdy chcesz przetestować wysyłkę z panelu, pole z hasłem musi być wypełnione.

Upewnij się że na dane, które podajesz w PrestaShop możesz zalogować się przez WebMaila udostępnionego przez Twojego dostawcę usług emial.

Mam nadzieję, że powyższe informację przydadzą się komuś, ponieważ przeszukując internet można znaleźć wiele osób które mają z tym problem (nie tylko w Polsce), natomiast w hostit.pl takich pytań mamy tygodniowo po kilkanaście.