Почтовое кодирование PHP?

Я испытываю некоторые затруднения из-за внешних символов при посылании электронного письма. Кто-то мог консультировать меня по вопросам того, что сделать? Я подозреваю, что проблемой могла быть одна из трех вещей.

  1. Кодирование страницы HTML является неправильным. (Это влияло бы на данные POST из формы?)
  2. Почтовая функция не имеет никакого кодирования. Таким образом программа не знает, как считать ее. (Скорее всего),
  3. Сам файл не имеет правильного кодирования и таким образом делает проблемы. (Вероятно, довольно вряд ли)

Есть ли какие-либо другие возможные причины?

Я пытаюсь пробить их 1 на 1, пока я не нахожу проблему. Я думаю, что опция 2 является наиболее вероятной причиной. Как я добавляю надлежащий - универсальное кодирование к почтовой функции?

Это - то, что я имею в данный момент.

$mail_sent = mail($client_email, $title, $message, "From: {$visitor_email}");

Я в настоящее время знаю, что форма не отправляет полировку или шведские символы.

Я был бы очень благодарен, если кто-то мог бы указать на какие-либо другие возможные причины и сказать мне, что, кодируя я должен использовать для отправки электронных писем.

Большое спасибо.

32
задан Neuron 20 January 2019 в 16:25
поделиться

4 ответа

Насколько мне известно, PHP не поддерживает UTF-8 в качестве кодировки по умолчанию для своих строк. Вам необходимо использовать соответствующие функции кодирования / обработки для той кодировки, которую вы предпочитаете.

Также добавьте Content-Type: text / html; charset = utf-8 в заголовки электронной почты, чтобы почтовые клиенты отображали символы правильно (или заменяли их кодировкой по вашему выбору).

30
ответ дан 27 November 2019 в 20:12
поделиться

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

$headerFields = array(
    "From: {$visitor_email}",
    "MIME-Version: 1.0",
    "Content-Type: text/html;charset=utf-8"
);
$mail_sent = mail($client_email, $title, $message, implode("\r\n", $headerFields));
24
ответ дан 27 November 2019 в 20:12
поделиться

Я использую следующий код:

  $text = "";
  $text .= "<html>\n";
  $text .= "<body style=\"font-family:Arial; \">\n";

  $text .= "<b>Add Your text here . . .</b>";
  $text .= date("d.m.Y") . " <br><br>\n\n";

  $text .= "</body>\n";
  $text .= "</html>\n";

$headers = 'From: ' . $myEmail . "\r\n";
$headers .= 'To: ' . $depEmail . "\r\n";    
$headers .= 'Return-Path: ' . $myEmail . "\r\n";
$headers .= 'MIME-Version: 1.0' ."\r\n";
$headers .= 'Content-Type: text/HTML; charset=ISO-8859-1' . "\r\n";
$headers .= 'Content-Transfer-Encoding: 8bit'. "\n\r\n";
$headers .= $text . "\r\n";

set_time_limit(30);
if (!mail('', 'Demande information', '', $headers)) {
  Alert(...)
4
ответ дан 27 November 2019 в 20:12
поделиться

Используйте почтовую оболочку PHP, это сохранит ваше рассудок (исходя из опыта здесь). Например, PHPMailer позволяет вам установить кодировку исходящей электронной почты и создает сообщение для вас.

Также используйте UTF-8; в настоящее время он поддерживается почти повсеместно и охватывает всех персонажей, которые вам когда-либо понадобятся.

2
ответ дан 27 November 2019 в 20:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: