2015-07-03 132 views
0

我正在使用Mandrill將郵件發送給我們的會員。
發送正常的短信完美無缺。
但Mandrill的'html' =>變量中不會附帶帶特殊字符(ä,ë,ï,ö,ü,€,...)的消息。如何用特殊字符發送Mandrill消息?

誰能告訴我如何通過Mandrill發送特殊字符的消息?

我試圖編輯$message_content變量str_replacepreg_replace,目前爲止沒有任何工作。

當我在輸入郵件內容時使用ï€時,它完美無缺。但是當按下提交按鈕時我似乎無法改變這一點。

這是我的代碼:

<? 
if(isset($_POST['submit']) { 
    $subject = $_POST['subject']; 
    $from_name = $_POST['from_name']; 
    $from_email = $_POST['from_email']; 
    $message_content = nl2br($_POST['message_content']); 
    $mail_to_members = array(); 
    $mail_to_members[] = array('email' => '[email protected]'); 
    $mail_to_members[] = array('email' => '[email protected]'); 

    //Get Mandrill API 
    require_once './include/src/Mandrill.php'; 
    $mandrill = new Mandrill('API-key'); 

    //Create mail 
    $message = array(
     'subject' => $subject, 
     'from_name' => $from_name, 
     'from_email' => $from_email, 
     'html' => $message_content, 
     'to' => $mail_to_members, 
    ); 

    $mandrill->messages->send($message); 
} 
?> 

回答

2

我們有此相同的問題,我們解決了它使用下列內容:

mb_convert_encoding($message_content, 'UTF-8', 'ASCII'); 

它把你從ASCII到UTF-8的內容。

+0

這確實可行!非常感謝! –

-1

嘗試使用htmlentities

將所有的特殊字符轉換爲HTML實體。

例如:

<?php 
$string = 'ä - ë - ï - ö - ü - €'; 
echo htmlentities($string); 

將outout:

&auml; - &euml; - &iuml; - &ouml; - &uuml; - &euro; 

任何HTML解析器,遵循標準就能顯示出來。

+0

不幸的是,當我將我的代碼更改爲: '$ message_content_POST = nl2br($ _ POST ['message_content']); $ message_content = htmlentities($ message_content_POST);' –

+0

'$ message_content'的輸出是什麼?你有錯誤嗎? – michaelbn

+0

如果我發送一些帶有特殊字符的文本,則輸出爲空。 我得到一個錯誤'stderr:PHP消息:PHP警告:curl_setopt():CURLOPT_FOLLOWLOCATION無法在第68行中的.../src/Mandrill.php中設置open_basedir時激活。但是當我發送正常信息... –