Intereting Posts
Хранение объектов в сеансе PHP Drupal module jQuery Ошибка размещения сценария PHP rabbitmq AMQP :: потреблять () разница между меткой времени Jquery и меткой времени php? PHP preg_match – разрешить буквенно-цифровые строки и – _ символов Как проверить электронную почту и электронную почту уже существует или не проверять в Yii Framework? дублировать запись для ключа 'idx_client_id_parent_id_alias_language' при ручной вставке базы данных joomla Каков самый простой способ увидеть имя файла содержимого веб-сайта? Как отправить необработанные данные POST с помощью cURL? (PHP) Проблема кодирования UTF8 – с хорошими примерами Переопределить методы аутентификации laravel 4 для использования пользовательской функции hasing laravel 5.4: Laravelcollective / html v5.3.0 требует подсветки / просмотра 5.3. * php – вставить переменную в строку эха Как заменить <! – etc -> С помощью переменной php regex: получить значение src

Восклицательный знак случайным образом в результате PHP-HTML-Email

Я получаю восклицательные знаки в случайных точках в результате этой функции электронной почты PHP. Я читал, что это потому, что мои строки слишком длинны или мне нужно закодировать электронную почту в Base64, но я не знаю, как это сделать.

Это то, что у меня есть:

$to = "you@you.you"; $subject = "Pulling Hair Out"; $from = "me@me.me"; $headers = "From:" . $from; $headers .= "MIME-Version: 1.0\r\n"; $headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n"; $headers .= "Content-Transfer-Encoding: 64bit\r\n"; mail($to,$subject,$message,$headers); 

Как исправить это, чтобы не было случайных! в результате? Благодаря!

Related of "Восклицательный знак случайным образом в результате PHP-HTML-Email"

Как указано здесь: восклицательный знак в HTML-письме

Проблема в том, что ваша строка слишком длинная. Подайте HTML-строку длиной более 78 символов в почтовую функцию, и вы получите в итоге! (bang) в вашей строке.

Это связано с ограничениями длины строки в RFC2822 http://tools.ietf.org/html/rfc2822#section-2.1.1

Попробуйте использовать этот фрагмент кода:

 $to = "you@you.you"; $subject = "Pulling Hair Out"; $from = "me@me.me"; $headers = "From:" . $from; $headers .= "MIME-Version: 1.0\r\n"; $headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n"; $headers .= "Content-Transfer-Encoding: 64bit\r\n"; $finalMessage = wordwrap( $message, 75, "\n" ); mail($to,$subject,$finalMessage,$headers); 

Проблема в том, что одна строка не должна превышать 998 символов. (см. также https://stackoverflow.com/a/12840338/2136148 )

В ответах здесь есть правильная информация о длине строки, однако ни один из них не предоставил мне достаточный фрагмент кода для исправления проблемы. Я оглянулся и нашел лучший способ сделать это, вот оно;

 <?php // send base64 encoded email to allow large strings that will not get broken up // ============================================== $eol = "\r\n"; // a random hash will be necessary to send mixed content $separator = md5(time()); $headers = "MIME-Version: 1.0".$eol; $headers .= "From: Me <info@example.com>".$eol; $headers .= "Content-Type: multipart/alternative; boundary=\"$separator\"".$eol; $headers .= "--$separator".$eol; $headers .= "Content-Type: text/html; charset=utf-8".$eol; $headers .= "Content-Transfer-Encoding: base64".$eol.$eol; // message body $body = rtrim(chunk_split(base64_encode($html))); mail($email, $subject, $body, $headers); // ============================================== 

Вы правы, потому что ваша электронная почта слишком длинная. Попробуйте заменить эту строку в своем почтовом заголовке.

 Content-Transfer-Encoding: quoted-printable