Кодировка темы письма с кириллицей

398
02 сентября 2017, 00:04

Всем доброго времени суток!

Такая ситуевина: Есть сервер Zimbra (все настроено не мной, данных даже для просмотра логов никто не дает)

Есть скрипт на PHP, который должен выполнять отправку писем на этот сервер

Проблема: Если тему письма отправить латинницей(т.е. на английском языке) все работает, стоит поменять тему письма на кириллические символы: письма не идут (функция mail возвращает true, в ящике письма нет)

Мысли:

  1. Письмо блокирует postfix( я так понял он стоит в корне зимбры )
  2. Спам-блок( править конфиги мне не дают )
  3. Беда с кодировкой (???)

protected $header = '';
protected $eol = '';
protected $infs = 'DOMAIN.ru';
public function __construct() {
    $os = strtoupper(substr(PHP_OS, 0, 3));
    $this->eol = "\r\n";
}
protected function generateHeaders($subject) {
    $mailto = 'support@'.$this->infs;
    $name = '=?WINDOWS-1251?B?"'.base64_encode('TheSystem Domain').'"?='.'<'.$mailto.'>';
    $now = "uniqid(): %s\r\n".uniqid();
    $mime_boundary=md5(time()); 
    $this->headers .= 'MIME-Version: 1.0'.$this->eol; 
    $this->headers .= "Content-Type: text/html; charset=\"WINDOWS-1251\"".$this->eol;
    $this->headers .= 'From: '. $name.$this->eol; 
    $this->headers .= 'Reply-To:'. $name.$this->eol; 
    $this->headers .= 'Return-Path:"'. $name.$this->eol;
    $this->headers .= "X-Mailer: PHP v".phpversion().$this->eol;
    $this->headers .= "Subject: =?UTF-8?B?".base64_encode(mb_convert_encoding($subject, 'utf-8', mb_detect_encoding($subject)))."?=".$this->eol;
    return $this->header;
}
protected function messagePrepare($msg) {
    return iconv('UTF-8', 'WINDOWS-1251', $prepare.$msg);
}
protected function subjectPrepare($subject) {
    $this->generateHeaders($subject);
    return mb_convert_encoding($subject, 'utf-8', mb_detect_encoding($subject));
}
public function send($address, $subject, $msg) {
    ini_set(sendmail_from, "TheSystem@DOMAIN.ru");
    $title = $this->subjectPrepare($subject);
    $mess = $this->messagePrepare($msg);
    echo base64_decode("0JfQsNC/0YDQvtGBINC90LAg0YDQtdCz0LjRgdGC0YDQsNGG0LjRjg==");
    var_dump($title, $mess, $this->headers);
    return mail($address, $title, $mess, $this->headers);
    ini_restore(sendmail_from);
}
Answer 1

Прошу прощения, решение найдено.

Ответ на вопрос:

$mail = new Mailer();
$mail->send('support@domain.ru', "=?UTF-8?B?".base64_encode($title)."?=", $msg) );
READ ALSO
solr php ERROR adding field

solr php ERROR adding field

через php пытаюсь наполнить солр, но иногда получаю такие ошибки: ERROR adding field pzn='**' rgn='1481/16' скрин прилагаю:

262
Вирус майнинга закрался на сервер

Вирус майнинга закрался на сервер

В файлах php появился посторонний код и в папки mod-tmo создаются файлы php*************** которые загружат cpu на до 100%

254
Проблема с кириллической кодировкой FPDF

Проблема с кириллической кодировкой FPDF

Вопрос: Как подружить плагин FPDF с кириллицей? Стоит FPDF 18 1) генерирую файлы Arial и TimesNewRoman встроенной утилитой makefont

363
Битрикс: Создание заказа из xml через D7

Битрикс: Создание заказа из xml через D7

добрый деньИмпортируя заказы через xml, столкнулся с проблемой: если добавляю товары - заказ создается, товары тоже попадают, но отваливаются...

390