Problem z wysyłką maili w PrestaShop
#prestashop #mail() #mail #poczta #smtp #konfiguracjaPoniż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.