当使用codeigniter email lib主题> 75个字​​符时,格式错误的电子邮件主题标题

wil*_*ler 4 email mime codeigniter utf-8

当主题超过75个字符时,我的MIME标题中出现了一些乱码.当换行符在标题中编码时,会有一个无效的额外换行符.

一些电子邮件网关正在弹出电子邮件,其中包含"格式错误的MIME字段:?= =?utf-8?Q?SUBJECT?="错误.

有没有人有任何使用CodeIgniter发送电子邮件的utf-8问题的经验?


-snip-
Return-Path: ***
Subject: =?utf-8?Q?SUBJECT_LINE    <--
?=                                 <-- Problem in Subject header
 =?utf-8?Q?SUBECT_LINE_2?=         <--
To: ***
Reply-To: ***
-snip-
Run Code Online (Sandbox Code Playgroud)

更新: 这与gmail smtp无关.我已经重写了这个问题,希望将来可以帮助某人.

wil*_*ler 16

显然这是一个已知问题,由主题行> 75个字​​符引起.

http://codeigniter.com/forums/viewthread/154493/P15/#925385

解决方法是更改​​电子邮件配置,如下所示:

$config['newline'] = "\r\n";
$config['crlf']    = "\n"; 
Run Code Online (Sandbox Code Playgroud)


Vad*_*Gut 5

由于我自己有这个确切的问题,我将在这里分享解决方案,因为共享的一个不适用于2.2版

找到位于system/libraries/Email.php:365中的这段代码

public function subject($subject)
{
    $subject = $this->_prep_q_encoding($subject);
    $this->_set_header('Subject', $subject);
    return $this;
}
Run Code Online (Sandbox Code Playgroud)

有这个

public function subject($subject)
{
    $subject = '=?UTF-8?B?'.base64_encode($subject).'?=';
    $this->_set_header('Subject', $subject);
    return $this;
}
Run Code Online (Sandbox Code Playgroud)