使用PHP Pear :: Mail多语言(泰米尔语)邮件发送,修剪收件箱邮件中的正文内容

时间:2013-12-27 13:07:18

标签: php email multilingual

我正在为我的某个应用程序实施多语言支持。在那我试图使用PHP Pear :: Mail&发送多语言邮件。 Pear :: Mail_Mime包。

以下是我的邮件发送功能。

function _send($to, $subject, $content){

    $smtp_details = $this->settings->getSMTPDetails();

    $host         = $smtp_details['smtp_host'];
    $port         = $smtp_details['smtp_port'];
    $username     = $smtp_details['smtp_username'];
    $password     = $smtp_details['smtp_password'];
    $from_address = $smtp_details['smtp_email'];

    /*
     * Decode the Unicode string and encrypt the string
     */

    $subject    = base64_encode($subject);
    $content    = base64_encode($content);

    if ($this->settings->getLanguage() != LANGUAGE_ENGLISH){
        $subject    = '=?UTF-8?B?'.$subject.'?=';
    }

    $headers = array ('From' => $from_address,
              'To' => $to,
              'Subject' => $subject,
              'Content-Type' => 'text/html; multipart/related; boundary=DeS-mixed-{$_boundary}; charset=UTF-8\n',
              'Content-Transfer-Encoding' => 'BASE64',  
              'MIME-Version' => '1.0'  );

    // Creating the Mime message
    $mime = new Mail_mime("\n");

    // Setting the body of the email
    $mime->setHTMLBody($content);

    $body = $mime->get();

    //$header = $mime->headers($headers);

    $smtp = Mail::factory('smtp',array ('host' => $host,
                            'port' => $port,
                            'auth' => true,
                            'username' => $username,
                            'password' => $password));
    $connectionCount = 0;
    do {
        $mail = $smtp->send($to, $headers, $body);
        $connectionCount++;
        if (PEAR::isError($mail) && $connectionCount < 3) {
            //echo 'Retrying to send email using Host:'.$host;
             sleep(1);
        } else {
            if (PEAR::isError($mail)){
                throw new Exception('Mail sending error: '.$mail->getMessage());    
            }else{
                return true;
            }
        }

    }while (1);
   }

,调用函数为:

echo $this->_send($to, json_decode("\u0B9A\u0BC7\u0BBE\u0BA4\u0BA9\u0BC8 \u0BAE\u0BBF\u0BA9\u0BCD\u0BA9\u0B9E\u0BCD\u0B9A\u0BB2\u0BCD"), json_decode("\u0B87\u0BA4\u0BC1 \u0B92\u0BB0\u0BC1 \u0B9A\u0BC7\u0BBE\u0BA4\u0BA9\u0BC8 \u0BAE\u0BBF\u0BA9\u0BCD\u0BA9\u0B9E\u0BCD\u0B9A\u0BB2\u0BCD"));

注意:电子邮件内容是Unicode JavaScript Escape字符串。

预期输出:

Subject: சோதனை மின்னஞ்சல் 
Body: இது ஒரு சோதனை மின்னஞ்சல்

我得到的实际输出:

Subject: சோதனை மின்னஞ்சல் 
Body: இந்த ஒரு சோதனை மின்�®

我的收件箱中的电子邮件正文内容受到限制。我是否错过任何标头配置?任何人都面临同样的问题请分享您的解决方案

提前致谢。

1 个答案:

答案 0 :(得分:0)

您是从数据库获取数据吗?你需要为电子邮件和数据库发送utf-8编码 你之前选择任何数据

mysql_query(“set character_set_client ='utf8'”);  mysql_query(“set character_set_results ='utf8'”);

mysql_query(“set collat​​ion_connection ='utf8_general_ci'”);