我无法在CodeIgniter纯文本电子邮件中获得行返回
I've been struggling with this one. No matter what I do, I cannot get new lines, empty lines, or line returns to show up in any email message I generate with CodeIgniter (v 2.1.3).
Within my Controller function:
$message = "Line one.
" .
"Line two.
" .
"Line three.
";
$subject = "My Subject Line";
$this->load->library('email');
$config['newline'] = "
"; // does not matter when I leave this out
$config['crlf'] = "
"; // 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();
I've changed no settings or defaults, other than what I've shown above.
The "source" of the message looks just like this print_debugger()
output...
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, the problem is that the actual message is rendering in all email clients as the following.
Line one.Line two.Line three.
Why are my "
"
being ignored?
This is a very simple message and I'd prefer to not have to use any html
options. As per CI documentation, the mailtype
preference should be defaulting to text
.
Where am I going wrong here?
The CodeIgniter 2 documentation appears to be wrong.
On this page, it contains a listing of available preferences.
Note this one, mailtype
...
Preference Default Value Options
mailtype text text or html
Adding the following setting fixed this problem, so clearly it's not the "default value"...
$config['mailtype'] = 'text';
My thread at CI asking about this discrepancy in the docs:
http://ellislab.com/forums/viewthread/234296/
EDIT:
Entire problem was being caused by the following code within my Ion Auth configuration file...
$config['email_config'] = array(
'mailtype' => 'html',
);
It seems codigniter is sending your email as both text/html and text/plain. Most email clients render html version of emails and in html white spaces are broken down to a singe space. Check if codeigniter has an option to turn off sending an html version or just use <br>
instead of
.