Zend_Mail with french characters in mail body
Asked Answered
B

2

11

I'm trying to send a mail using Zend_Mail using the following code:

 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));
}

Now the problem is that $mailBody has french characters. for example:

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

When the sent mail is then viewed the same line appears like this:

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

The accents were replaced by a question mark! I tried to encode the mail body using utf8_encode, but the problem still persisted.

Note: The body contents are read from a text file using file_get_contents.

Berners answered 1/2, 2012 at 10:9 Comment(1)
Did you ensure the text file has the right encoding? You can check it in a text editor. Doing that and constructing Zend_Mail with the UTF-8 option (as suggested below) should be enough.Shirt
P
25

You have to set the encoding to UTF-8 in Zend_Mail constructor :

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

Make sure also that $mailBody contains UTF-8 text.

Pin answered 1/2, 2012 at 14:46 Comment(1)
is there any way to set 'UTF-8' in the global $config? Like this: Zend_Mail::setDefaultTransport(new Zend_Mail_Transport_Smtp('smtp.gmail.com', $config));Deweese
L
1

Use the :

$mail->setBodyHtml();

instead of :

$mail->setBodyText();

the problem will be short out.

Ln answered 1/2, 2012 at 10:21 Comment(1)
campaignmonitor.com/blog/post/3154/… check this link.Dasya

© 2022 - 2024 — McMap. All rights reserved.