2012-02-01 33 views
7

Tôi đang cố gắng để gửi một email bằng Zend_Mail sử dụng đoạn mã sau:Zend_Mail với các nhân vật tiếng Pháp trong thư thân

function sendMail() { 

    $config = array('auth' => 'login', 
       'username' => 'UserName', 
       'password' => 'Password', 
       'port'=>'27');  

    $mail = new Zend_Mail(); 

    $mail->setBodyText($mailBody); 

    $mail->setFrom('[email protected]', 'The Company Name'); 
    $mail->addTo('[email protected]', 'Recipient Name'); 
    $mail->setSubject('Mail subject');  
    $mail->send(new Zend_Mail_Transport_Smtp('[email protected]', $config)); 
} 

Bây giờ vấn đề là $mailBody có ký tự tiếng Pháp. ví dụ:

Merci d'avoir passé commande avec Lovre. Voici le récapitulatif de votre commande 

Khi thư được gửi sau đó được xem cùng một dòng xuất hiện như thế này:

Merci d'avoir pass? commande avec Lovre. Voici le r?capitulatif de votre commande 

Các điểm nhấn được thay thế bằng một dấu chấm hỏi! Tôi đã cố gắng mã hóa nội dung thư bằng cách sử dụng utf8_encode, nhưng sự cố vẫn tiếp tục tồn tại.

Lưu ý: Nội dung nội dung được đọc từ tệp văn bản sử dụng file_get_contents.

+0

Bạn có đảm bảo tệp văn bản có mã hóa đúng không? Bạn có thể kiểm tra nó trong một trình soạn thảo văn bản. Làm điều đó và xây dựng 'Zend_Mail' với tùy chọn' UTF-8' (như gợi ý bên dưới) là đủ. – bububaba

Trả lời

21

Bạn phải thiết lập bảng mã UTF-8 trong Zend_Mail constructor:

$mail = new Zend_Mail('UTF-8'); 

Hãy chắc chắn cũng là $ mailBody chứa UTF-8 văn bản.

+1

+1, đơn giản và súc tích. – philwinkle

+1

có cách nào để đặt 'UTF-8' trong cấu hình $ toàn cục không? Như sau: Zend_Mail :: setDefaultTransport (new Zend_Mail_Transport_Smtp ('smtp.gmail.com', $ config)); – adamnyberg

1

Sử dụng:

$mail->setBodyHtml(); 

thay vì:

$mail->setBodyText(); 

vấn đề sẽ ngắn ra.

+0

Thực ra tôi đã thử điều đó và nó không hoạt động. – Songo

+1

Bạn đã thử nó $ mail = new Zend_Mail ('utf-8'); –

+0

vâng tôi đã thử điều đó và nó vẫn không hoạt động. – Songo

Các vấn đề liên quan