Mam formularz na stronie internetowej, który wysyła e-mailem szczegóły za pomocą funkcji PHP mail()
. Formularz jest dość długi i dołączam również formatowanie HTML do wiadomości e-mail.
Wiadomość e-mail zostanie wysłana poprawnie, jeśli nie dołączę wszystkich informacji z formularza, ale gdy próbuję podać cały formularz, wiadomość e-mail nie zostanie wysłana. Wydaje się, że przestaje działać, gdy dołączam za dużo informacji. Gdy tylko wyjmę część informacji, znowu działa i nie ma znaczenia, którą część informacji usunę.
Wypróbowałem formularz na dwóch różnych hostach internetowych z tym samym problemem. Treść e-maila ma tylko około 300 linii, więc nie jestem pewien, czy rozmiar jest problemem.
Czy ktoś wie, co może powodować problem?
oto mój kod w celach informacyjnych
Kiedy mówię "przestań działać" powyżej, mam na myśli po prostu, że funkcja mail()
zwraca false i nie wysyła e-maila. Rzeczywista forma działa dobrze.
2 odpowiedzi
Kiedy dojdziesz do takiej ilości kodu HTML w skrypcie PHP, przydatne jest przechwycenie go w zmiennej zamiast umieszczania każdego wiersza w zmiennej $body.
ob_start();
?>
<html>
Your HTML.
</html>
<?
$body = ob_get_clean();
W ten sposób możesz łatwiej sprawdzić, czy coś jest nie tak z twoją wiadomością, rujnując funkcję poczty.
Oto opis funkcji poczty php. Ten dokument wraz z tym dokumentem, Co to jest limit znaków w poczcie PHP określa, że każdy wiersz treści nie może być dłuższy niż 70 znaków.
Ten stackoverflow, Jaka jest maksymalna długość ciągu w PHP, jak również inne źródła wskazują, że PHP nie ma określonego limitu innego niż całkowite limity pamięci, pod którymi twój ciąg wydaje się być znacznie poniżej.
Istnieje również kilka różnych miejsc, w których może wystąpić awaria i nie określasz zachowania, które widzisz w przypadku awarii.
Przede wszystkim sprawdź wartość zwracaną przez mail(), aby określić, czy PHP było w stanie przekazać wiadomość agentowi poczty, MTA. Następnie upewnij się, że określiłeś adresy dobre do i zwrotne, aby w przypadku problemu z agentem pocztowym mógł on wysłać ci jakąś odpowiedź opisującą problem.
Opracowanie odpowiedzi udzielonej przez Undrium powyżej. Oto kilka linków do dodatkowych materiałów na podstawie jego odpowiedzi.
Oto dokumentacja ob_get_clean().
Oto przykład użycia ob_get_clear() do wysyłania wiadomości e-mail w formacie HTML.
Podobne pytania
Powiązane pytania
Nowe pytania
php
PHP to szeroko stosowany, wysokopoziomowy, dynamiczny, zorientowany obiektowo i interpretowany język skryptowy przeznaczony głównie do tworzenia stron WWW po stronie serwera. Używane w przypadku pytań dotyczących języka PHP.