Codeigniter: ищите объяснение функциональности email-> set_newline (..) - PullRequest
0 голосов
/ 19 ноября 2011

В настоящее время я занимаюсь разработкой веб-сайта с помощью codeigniter и библиотеки ion auth .

Я пытаюсь использовать стандартную функциональность ion auth для сброса пароля пользователя.

В библиотеке есть 2 функции:

  • forgotten_password($identity)
  • forgotten_password_complete($code)

Обе функции (в случае проверки) отправляют пользователю электронное письмо.Сами функции работают, но письма, которые я получаю, не работают.Заголовок письма отображается как часть тела письма.Вот как выглядит испорченное письмо:

Date: Fri, 18 Nov 2011 23:36:32 +0100

From: "Example.com" <admin@example.com>

Reply-To: "admin@example.com" <admin@example.com>

X-Sender: admin@example.com

X-Mailer: CodeIgniter

X-Priority: 3 (Normal)

Message-ID: <4ec6ddf0d26a3@example.com>

Mime-Version: 1.0

Content-Type: multipart/alternative; boundary="B_ALT_4ec6ddf0d26b9"






This is a multi-part message in MIME format.

Your email application may not support this format.



--B_ALT_4ec6ddf0d26b9

Content-Type: text/plain; charset=utf-8

Content-Transfer-Encoding: 8bit



New Password for test_user



Your password has been reset to: 0774b65f5e





--B_ALT_4ec6ddf0d26b9

Content-Type: text/html; charset=utf-8

Content-Transfer-Encoding: quoted-printable



<html>
<body>
    <h1>New Password for test_user</h1>
=09
    <p>Your password has been reset to: 0774b65f5e</p>
</body>
</html>



--B_ALT_4ec6ddf0d26b9--

Однако мне удалось отследить строку, которая вызывает проблему:

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

Когда я комментируюиз этой строки (в обеих функциях, упомянутых выше), электронные письма, которые я получаю, когда я сбрасываю пароль пользователя, в порядке.

Может кто-нибудь объяснить мне назначение этой строки и не очень хорошо, если это хорошая идеярешить эту проблему, просто закомментировав строку.

Я также нашел 2 вопроса

ссылаясь на ту же или, по крайней мере, похожую проблему.Поскольку они довольно старые и еще не получили ответа, я создал новый.Надеюсь, никто не возражает.

Ответы [ 2 ]

3 голосов
/ 19 ноября 2011

Различные операционные системы используют разные символы для определения новой строки (место, в котором строка переносится на следующую строку.) В HTML эквивалентом является тег <br>. Некоторые (старые? Mac) традиционно используют \r, некоторые (Unix) традиционно используют \n, а другие (Windows) традиционно используют оба (\r\n).

Codeigniter по умолчанию равен \n (см. документация ), но автор ионной аутентификации отверг это для использования \r\n, что является стандартом .

Итак, программа, анализирующая заголовки писем (которая, по моему мнению, основана на * nix), видит нестандартную строку \r\n и не начинает выводить заголовки как часть тела.

Насколько мне известно, вы справитесь только с \n, поэтому Codeigniter по умолчанию его использует. В каждом случае, когда я видел людей с проблемами, были люди, использующие \r\n и получающие ту же проблему, что и вы.

1 голос
/ 19 ноября 2011

В CI этот параметр по умолчанию равен '\n', когда вы комментируете эту строку. Настройка зависит от почтового сервера, который используется PHP. Иногда postfix и некоторые другие серверы заменяют \r\n на \r\r\n, что приводит к ошибкам, поэтому в этих случаях лучше всего использовать \n, поскольку стандарт (RFC 822) требует \r\n.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...