Подтвердить что ты не робот

Сообщение электронной почты CodeIgniter SMTP - символы заменены одинаковыми знаками

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

Есть несколько слов, которые заменяются равными знаками "=", я попробовал 2 разных сервера Exchange (они находятся в разных местах и ​​не имеют никакого отношения к тому, что когда-либо), и я все равно получаю ту же проблему. Если я использую любой другой сервер в качестве SMTP-сервера для отправки писем, все работает нормально, а контент остается неизменным и неизменным.

Содержимое перед отправкой:

Dear Customer

Please find attached a comprehensive explanation of how to get our brochure of Angola. This has been sent to you at the request of Alex.

The information has been taken from www.example.co.uk  "Company name" is one of the leading tile and marble companies in the UK. 

Содержимое после отправки через Microsoft Exchange:

Dear Customer

Please find attached a comprehensive explanation of how to get our brochure of A=gola. This has been sent to you at the request of Alex.

The information has been taken from www.example.co.uk  "Company name" is one of the leadi=g tile and marble companies in the UK. 

Как видно, по какой-то причине некоторые из "n" символов были заменены равными знаками "=" (пример: Angola > A = gola)

Моя конфигурация электронной почты:

$this->load->library('email');
$config['charset']      = 'utf-8';
$config['mailtype']     = 'html';


// SMTP
$config['protocol']     = 'smtp';
$config['smtp_host']    = 'exchange.example.com'; //ssl://
$config['smtp_user']    = '[email protected]';
$config['smtp_pass']    = 'password';
$config['smtp_port']    = 25;

$this->email->set_newline( "\r\n" );

$this->email->initialize( $config );

$this->email->clear();

......

$this->email->from( $frome, $fromn );
$this->email->to( $email );

$this->email->subject( $subject );
$this->email->message( $send_message );


$this->email->send();

Кто-нибудь знает, почему Microsoft Exchange ведет себя так? или есть какая-то настройка, которую я должен использовать?

4b9b3361

Ответ 1

Это нечетно, тем более, что не все n транслитерируются, а не в определенной позиции.

Попробуйте также вызвать $this->email->set_crlf( "\r\n" );. Просмотрите данные сообщения в Exchange и проверьте Content-Type и Charset/Encoding - разместите здесь необработанную вещь, чтобы мы могли ее проверить.

Я нашел это в База знаний Microsoft:

Microsoft Exchange использует расширенный набор символов. По умолчанию MIME набор символов для Microsoft Exchange - ISO 8859-1. Некоторые шлюзы не поддерживать способ, которым этот набор символов вызывает мягкое возвращение для строки каналы. Когда это происходит, каждая строка заканчивается знаком равенства показывая прерывание линии, где заканчивается поддержка длины линии шлюза.

Ответ 2

Я решил это (kinda), установив $charlim = '998' в функцию _prep_quoted_printable.

Когда я установил $crlf = "\r\n", получившееся сообщение по какой-то причине было полностью искажено. Но я заметил, что знаки = появлялись с регулярными интервалами, что было вызвано длиной линии, равной 76 символам. Таким образом, увеличение максимальных символов на строку (998 - это ограничение RFC2822) решает проблему, если у вас нет действительно длинных строк.