我无法在CodeIgniter纯文本电子邮件中获得行返回

时间:2013-03-24 22:17:43

标签: php codeigniter newline codeigniter-2 email-integration

我一直在努力解决这个问题。无论我做什么,我都无法在使用CodeIgniter(v 2.1.3)生成的任何电子邮件中显示新行,空行或换行符。

在我的控制器功能中:

$message = "Line one.\r\n\r\n" .
"Line two.\r\n\r\n" .
"Line three.\r\n\r\n";

$subject = "My Subject Line";

$this->load->library('email');                  
$config['newline'] = "\r\n";  // does not matter when I leave this out
$config['crlf'] = "\r\n";     // does not matter when I leave this out
$this->email->initialize($config);              
$this->email->from('system@mydomain.com', 'my system');
$this->email->to('me@gmail.com');               
$this->email->subject($subject);
$this->email->message($message);                
$this->email->send();               
echo $this->email->print_debugger();

我没有更改任何设置或默认设置,除了我上面显示的内容。

消息的“来源”看起来就像这个print_debugger()输出......

User-Agent: CodeIgniter
Date: Sun, 24 Mar 2013 17:46:47 -0400
From: "my system" 
Return-Path: 
Reply-To: "system@mydomain.com" 
X-Sender: system@mydomain.com
X-Mailer: CodeIgniter
X-Priority: 3 (Normal)
Message-ID: <xxxxxx@mydomain.com>
Mime-Version: 1.0
Content-Type: multipart/alternative; boundary="B_ALT_514f74472bd26" 

=?utf-8?Q?My_Subject_Line?=
This is a multi-part message in MIME format.
Your email application may not support this format.

--B_ALT_514f74472bd26
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit

Line one.

Line two.

Line three.

--B_ALT_514f74472bd26
Content-Type: text/html; charset=utf-8
Content-Transfer-Encoding: quoted-printable

Line one.

Line two.

Line three.

--B_ALT_514f74472bd26--

HOWEVER ,问题是实际邮件会在所有电子邮件客户端中呈现如下。

Line one.Line two.Line three.

为什么我的"\r\n"会被忽略?

这是一条非常简单的消息,我宁愿不必使用任何html选项。 As per CI documentationmailtype首选项应默认为text

我在哪里错了?

2 个答案:

答案 0 :(得分:3)

CodeIgniter 2文档似乎有误。

On this page,它包含可用偏好列表。

请注意这一个,mailtype ...

Preference     Default Value      Options       
mailtype       text               text or html 

添加以下设置解决了这个问题,显然它不是“默认值”......

$config['mailtype'] = 'text';

我在CI的帖子询问文档中的这种差异:

http://ellislab.com/forums/viewthread/234296/


修改

整个问题是由我的Ion Auth配置文件中的以下代码引起的......

$config['email_config'] = array(
    'mailtype' => 'html',
);

答案 1 :(得分:1)

似乎codigniter正在以text / html和text / plain发送您的电子邮件。大多数电子邮件客户端呈现html版本的电子邮件,并且在html中,空白区域被分解为单个空间。检查codeigniter是否有关闭发送html版本的选项,或仅使用<br>代替\r\n