Хотелось узнать, есть ли какие-либо функции / классы / etc .., чтобы помочь с ограничением на 990 символов для электронной почты, поскольку из-за этого выполняется мой HTML.
Проблема: ( Источник )
Обратите внимание, что почтовые серверы имеют ограничение по 990 символов для каждой строки, содержащейся в сообщении электронной почты. Если отправлено сообщение электронной почты, которое содержит строки длиной более 990 символов, эти строки будут разделены на дополнительные символы окончания строки, что может привести к повреждению сообщения электронной почты, особенно для содержимого HTML. Чтобы этого не произошло, добавьте свои собственные символы окончания строки в соответствующих местах в сообщении электронной почты, чтобы убедиться, что строки не длиннее 990 символов.
У кого-нибудь еще есть эта проблема? и как вы это исправили?
Похоже, мне нужно найти хорошее место, чтобы разбить мой HTML и вручную добавить разрыв строки, ugh …
ОБНОВИТЬ:
Это табулатурные данные со многими строками. Так что мне нужно добавить \ n или <br />
где-нибудь?
ОБНОВЛЕНИЕ # 2: Добавление кода типа MIME
$headers = "MIME-Version: 1.0" . "\r\n"; $headers .= "Content-type:text/html;charset=iso-8859-1\r\n"; $headers .= "Content-Transfer-Encoding: quoted-printable\r\n"; // added this, but still no results $headers .= "From: from@email.com\r\n";
Вот как я вызываю функцию (ы):
Как я изначально называл:
return $html;
То, что я пробовал:
return imap_8bit($html); // not working, nothing is captured in the error log
А ТАКЖЕ
return imap_binary($html); // not working, nothing is captured in the error log
ОБНОВЛЕНИЕ # 3 (Добавление функции почты)
try { mail( 'to@email.com', 'Subject of Email', $html, $headers ); } catch (Exception $e) { echo ("ERROR: Email NOT sent, Exception: ".$e->getMessage()); }
Пример HTML (Это сообщение электронной почты HTML) (Это также относится к классу, который является частью службы XMLRPC)
private function getHTML() { $html = '<html><head><title>Title</title></head><body>'; $html .= '<table>'; $html .= '<tr><td>many many rows like this</td></tr>'; $html .= '<tr><td>many many rows like this</td></tr>'; $html .= '<tr><td>many many rows like this</td></tr>'; $html .= '<tr><td>many many rows like this</td></tr>'; $html .= '<tr><td>many many rows like this</td></tr>'; $html .= '</table>'; $html .= '</body>'; $html .= '</html>'; return $html; //return imap_8bit($html); // not working, nothing is captured in the error log //return imap_binary($html); // not working, nothing is captured in the error log // Both of these return the XMLRPC Fault Exception: 651 Failed to parse response }
Исключение ошибки: 651 Не удалось проанализировать ответ, в основном не нравится формат или способ возврата данных.
Вы можете поместить свой контент через функцию wordwrap (), чтобы вручную не вводить новые строки.
Рассматривали ли вы использование одной из многочисленных почтовых библиотек? PHPMailer , PEAR Mail , SwiftMailer и т. Д.??
Серверы заказов имеют еще более низкий предел: 76 символов в строке + \r\n
.
Вы должны использовать функции imap_8bit()
и imap_binary()
для преобразования ваших данных в кодировку base64 или кавычки .
Вы также можете использовать существующую библиотеку, например SwiftMailer .
На самом деле, это не проблема «почтового сервера». Ограничение линии SMTP определяет количество символов, разрешенных в каждой строке во время передачи. SMTP RFC допускает до 1000 символов в строке, а установленный постфикс по умолчанию – 998 символов. Вы должны связаться с вашим провайдером хостинга, чтобы увеличить лимит линии SMTP, если вы считаете необходимым превысить RFC.