Всем доброго времени суток!
Такая ситуевина: Есть сервер Zimbra (все настроено не мной, данных даже для просмотра логов никто не дает)
Есть скрипт на PHP, который должен выполнять отправку писем на этот сервер
Проблема: Если тему письма отправить латинницей(т.е. на английском языке) все работает, стоит поменять тему письма на кириллические символы: письма не идут (функция mail возвращает true, в ящике письма нет)
Мысли:
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);
}
Прошу прощения, решение найдено.
Ответ на вопрос:
$mail = new Mailer();
$mail->send('support@domain.ru', "=?UTF-8?B?".base64_encode($title)."?=", $msg) );
Сборка персонального компьютера от Artline: умный выбор для современных пользователей