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.

-1
Ben 28 wrzesień 2012, 15:44

2 odpowiedzi

Najlepsza odpowiedź

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.

1
Undrium 28 wrzesień 2012, 15:51

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.

1
Community 23 maj 2017, 14:52