2015-07-03 70 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时激活。但是当我发送正常信息... –