Я использую электронную библиотеку 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@example.com'; $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 ведет себя так? или есть какая-то настройка, которую я должен использовать?
Это странно, потому что не все n
транслитерируются, а не в определенной позиции.
Попробуйте вызвать $this->email->set_crlf( "\r\n" );
также. Просмотрите информацию о сообщениях в Exchange и проверьте Content-Type
и Charset / Encoding – разместите здесь необработанную вещь, чтобы мы могли ее осмотреть.
Я нашел это в базе знаний Microsoft :
Microsoft Exchange использует расширенный набор символов. Набор символов MIME по умолчанию для Microsoft Exchange – ISO 8859-1. Некоторые шлюзы не поддерживают то, как этот набор символов выдает мягкий возврат для линейных каналов. Когда это происходит, каждая строка заканчивается знаком равенства, показывающим разрыв строки, где заканчивается поддержка длины строки шлюза.
Я решил это (kinda), установив $charlim = '998'
в функцию _prep_quoted_printable
.
Когда я устанавливаю $crlf = "\r\n"
получившееся сообщение по какой-то причине полностью исказилось. Но я заметил, что знаки = появлялись с регулярными интервалами, что было вызвано длиной линии, равной 76 символам. Таким образом, увеличение максимальных символов на строку (998 – это предел RFC2822) решает проблему, если у вас нет действительно длинных строк.