2011-11-18 4 views
0

현재 codeigniterion auth 라이브러리를 사용하여 웹 사이트를 개발하고 있습니다.Codeigniter : 전자 메일 -> set_newline (..) 기능에 대한 설명을 찾고 있습니다.

ion auth의 표준 기능을 사용하여 사용자 비밀번호를 재설정하려고합니다. 도서관에서

2 개 기능이 있습니다 :

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

두 함수 (경우 유효성 검사를 통해 간다에서) 사용자에게 이메일을 보내. 함수 자체는 작동하지만 내가받은 이메일은 깨졌습니다. 전자 메일 머리글은 전자 메일 본문의 일부로 표시됩니다. 이 깨진 이메일 모습입니다 : 내가 문제의 원인이되는 선을 추적 할 수 있었다 그러나

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

From: "Example.com" <[email protected]> 

Reply-To: "[email protected]" <[email protected]> 

X-Sender: [email protected] 

X-Mailer: CodeIgniter 

X-Priority: 3 (Normal) 

Message-ID: <[email protected]> 

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");

기능 모두에 언급 위), 사용자 비밀번호를 재설정 할 때받은 이메일은 괜찮습니다.

누군가이 라인의 목적을 나에게 설명해 줄 수 있습니까? 라인을 주석 처리하여이 문제를 해결하는 것이 좋을지 모르겠습니까?

는 또한 동일하거나 적어도 비슷한 문제를 참조이 질문에 Problem sending email with Codeigniter - Headers sent in the message body
  • https://stackoverflow.com/questions/6740672/mime-format-email-breaking-sporadically-in-hotmail-php-codeigniter
    • 을 발견했다. 그들은 상당히 오래되었고 아직 답변을받지 못했기 때문에 새로운 것을 만들었습니다. 희망은 아무도 없습니다.

    답변

    3

    운영 체제가 다르면 새 줄 (줄이 다음 줄로 나뉘는 곳)을 결정하는 데 다른 문자가 사용됩니다. HTML에서 해당 문자는 <br> 태그입니다. 일부는 (이전 Mac?) 전통적으로 \r을 사용하고 일부는 (유닉스) 전통적으로 \n을 사용하고 다른 것들은 윈도우 모두 전통적으로 둘 다 (\r\n)를 사용합니다.

    된답니다 \n 기본값 (documentation 참조)하지만, standard입니다 \r\n를 사용하는 이온 인증의 오버라이드의 작가.

    그래서 전자 메일 헤더를 구문 분석하는 프로그램 (필자의 추측에 따르면 * nix 기반)은 Unix 표준이 아닌 \r\n 행을보고 본문의 일부로 머리글을 튀기기 시작합니다.

    내가 아는 바로는 \n으로 정상적으로 처리되므로 Codeigniter가 기본값이됩니다. 문제가있는 사람들의 모든 사례는 \r\n을 사용하는 사람들과 똑같은 문제를 겪고 있습니다.

    1

    CI에서 해당 줄을 주석 처리 할 때 기본값은 '\n'입니다. 설정은 PHP에서 사용중인 메일 서버에 따라 다릅니다. 가끔 postfix와 다른 서버가 \r\n\r\r\n으로 바꿔 오류를 일으킬 수 있으므로이 경우에는 표준 (RFC 822)에 \r\n이 필요하기 때문에 \n 만 사용하는 것이 가장 좋습니다.

    관련 문제