2014-09-26 35 views
0

我正在爲非政府組織開發一個開源休假管理系統。該軟件必須以多種語言提供;例如法國和高棉。CodeIgniter:如何發送非拉丁字符的HTML電子郵件

我在努力發送HTML電子郵件時遇到了困難,它使用CodeIgniter 2.2.0。我知道這是可能的,這個問題已經在這裏提出。但我仍然失敗。

我想實現:

  • 解析一個視圖中創建電子郵件的HTML正文。
  • 發送HTML格式的電子郵件。

這是英文內容的工作,但它不起作用時,電子郵件包含非拉丁字符。

我跟着前面的答案的建議:

  • 所有我的項目的文件是UTF-8編碼(無BOM)。
  • 有人建議將'newline'和'crlf'設置爲'\ r \ n'。

讓我們帶着我的項目的例子:

  • 包含電子郵件的HTML體的CI View(例如法語):
  • 發送電子郵件的CI controller
  • 在配置我使用(我試圖與各個的SMTP服務器;演示demo.leave-management-system.org連接到GMAIL):

$config['protocol'] = 'smtp'; 
$config['useragent'] = 'CodeIgniter'; 
$config['smtp_host'] = 'localhost'; 
$config['smtp_user'] = ''; 
$config['smtp_pass'] = ''; 
$config['_smtp_auth'] = TRUE; 
$config['smtp_port'] = '25'; 
$config['smtp_timeout'] = '20'; 
$config['charset'] = 'utf-8'; //'iso-8859-1' 
$config['mailtype'] = 'html'; 
$config['wordwrap'] = FALSE; 
//$config['wrapchars'] = 80; 
$config['validate'] = FALSE; 
$config['priority'] = 3; 
$config['newline'] = "\r\n"; 
$config['crlf'] = "\r\n"; 
+0

http://stackoverflow.com/questions/20655632/email-subject-shortened-in-codeigniter,希望這會有所幫助, – Rorschach 2014-09-26 11:12:34

+0

我已經閱讀過這個答案。給出的解決方案是在配置數組中將'charset'設置爲'utf-8'。我已經這樣做了,但沒有解決問題。此外,這個問題與這個問題有關,我的問題與按摩有關。不管怎樣,謝謝你。 – 2014-09-26 11:48:28

+1

我明白了,你有沒有看到這個http://www.ustrem.org/en/articles/send-mail-using-phpmailer-en/? – Rorschach 2014-09-26 11:53:01

回答

2

經過大量的搜索後,我放棄了並決定使用PHPMailer和CodeIgniter的包裝器。我不知道什麼是錯的,但只有這樣,才能使工作是屬性明確設置編碼爲引用可打印因爲這個例子用的PHPMailer:

<?php 
echo "Start<br />\n"; 
require 'PHPMailerAutoload.php'; 
$mail = new PHPMailer; 
$mail->isSMTP(); 
$mail->Host = 'localhost'; 
$mail->Port = 25; 
$mail->setFrom('[email protected]', 'ប្រភេទនៃការសុំច្បាប់'); 
$mail->addAddress('[email protected]'); 
$mail->WordWrap = 70; 
$mail->CharSet = 'UTF-8'; 
$mail->Encoding = 'quoted-printable'; 
$mail->XMailer = 'Test'; 
$mail->IsHTML(true); 
$message = '<html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"><meta charset="UTF-8"></head><body>test: <ul><li>ប្រភេទឈប់សម្រាកបានធ្វើអោយទាន់សម័យដោយជោគជ័យ</li></ul></body></html>'; 
$mail->Subject = 'Khmer - ប្រភេទនៃការសុំច្បាប់'; 
$mail->Body = $message; 
$mail->send(); 

如果你不」 t設置編碼屬性,主題和發件人將正確設置,但不是HTML正文...

CI郵件庫的問題是,您必須轉義身體的所有非拉丁字符。如果您使用包含非歐洲語言的HTML視圖進行工作是不現實的。

您可以使用此wrapper for CodeIgniter但不要忘了明確設置編碼屬性引用可打印更新Body屬性之前。