Строка сообщения PHP Mail

Когда я пытаюсь отправить HTML-закодированное электронное письмо с PHP, если строка темы содержит специальные символы, такие как "Here's the information you requested" , PHP кодирует ее, чтобы прочитать "Here's the information you requested."

Как это исправить?


Вот как выглядит код с помощью PHP mail ():

 $headers = 'MIME-Version: 1.0' . "\r\n"; $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; $headers .= 'To: ' . $mod_params['name'] . '<' . $mod_params['email'] . '>' . "\r\n"; $headers .= 'From: <do_not_reply@a4isp.com>' . "\r\n"; $email_to = $mod_params['email']; $email_sub = "Here's the Information You Requested"; $body = html_entity_decode("<html><body>" . $email_html_body . "</body></html>"); mail($email_to,$email_sub,$body,$headers); 

Он дает ту же ошибку, что и ее запуск через класс SugarPHPMailer.

Related of "Строка сообщения PHP Mail"

Попробуй это:

  $newsubject='=?UTF-8?B?'.base64_encode($subject).'?='; 

Таким образом, вы не полагаетесь на PHP или кодировку MTA, вы выполняете эту работу, и почтовый клиент должен ее понимать. Никаких специальных символов в вашем новом предмете не будет, поэтому при доставке электронной почты никаких проблем не возникнет.

У меня была аналогичная проблема в подключаемом модуле WordPress, над которым я работал, и я много раз пробовал свой мозг, пытаясь найти различные предложения здесь и в других результатах поиска Google. Я наконец нашел решение, которое работало в моей ситуации, поэтому я поделюсь им. Я скажу, что это было решение Павла, с которым я сначала попытался, и это не сработало, но причина в том, что я пытался «сократить» решение. В моем случае просто вызов html_entity_decode () не работал. Зачем? Если бы я более подробно прочитал PHP-документ, это было бы очевидно. Моя проблема заключалась в кодировании по одной кавычки, а по умолчанию для html_entity_decode () есть «ENT_COMPAT», который оставляет одиночные кавычки в одиночку. Решение заключалось в том, чтобы установить все параметры и работать. На самом деле я, вероятно, мог бы отказаться от кодировки, так как я кодировал UTF-8, но решил, что я буду тщательным.

 $decoded_str = html_entity_decode ( $value_to_decode, ENT_QUOTES, 'UTF-8' ); 

Урок здесь хороший, «Прочитайте документы». Я не говорю, что вы этого не сделали (вы, наверное, сделали), но многие из нас спешат и замаскивают решение, которое сидит там, глядя нам в глаза, если мы только посмотрим.

Если строка действительно не содержит закодированных значений перед отправкой, посмотрите на это :

 $subject= mb_encode_mimeheader($subject,"UTF-8", "B", "\n"); // or $subject= mb_encode_mimeheader($subject,"UTF-7", "Q", "\n"); 

Взгляните на эти сообщения, связанные с SugarCRM:

Вы должны использовать mb_encode_mimeheader , просто не забудьте установить его раньше.

 mb_internal_encoding("UTF-8"); //has to be set (of course your internal encoding may not be UTF-8). $subject = mb_encode_mimeheader($subject,'UTF-8','Q'); 

Он позаботится о кодировании (читаемый человеком). Котируемая печать при необходимости и автоматически разбивает объект на нужное количество строк в зависимости от длины.

Попробуйте запустить строку темы через html_entity_decode () , похоже, что у вас есть какие-то сущности в строке темы.

Попробуйте использовать SwiftMailer или другую библиотеку, которая обрабатывает все сложности создания и кодирования HTML-почты для вас.

Отправка блокирующего кода кода часто приводит к более быстрому реагированию. Скорее всего, вы кодируете текст где-то до этого действия. Как было предложено ранее, вы можете найти это действие и исправить его, или вы можете просто декодировать строку темы перед отправкой электронной почты.