【问题标题】:How to send Mandrill message with special characters?如何发送带有特殊字符的 Mandrill 消息?
【发布时间】:2015-09-21 06:43:02
【问题描述】:

我正在使用 Mandrill 向我们的会员发送邮件。
发送普通短信非常完美。
但是带有特殊字符 (ä,ë,ï,ö,ü,€,...) 的消息不会附加到 Mandrill 的 'html' => 变量中。

谁能告诉我如何通过 Mandrill 发送带有特殊字符的消息?

我尝试使用str_replacepreg_replace 编辑$message_content 变量,但目前没有任何效果。

当我在输入消息内容时使用ï€ 时,效果很好。但是按下提交按钮时我似乎无法更改此设置。

这是我的代码:

<?
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' => 'name@domain.com');
    $mail_to_members[] = array('email' => 'name@domain.com');

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

【问题讨论】:

    标签: php special-characters mandrill


    【解决方案1】:

    我们遇到了同样的问题,我们使用以下方法解决了它:

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

    它将您的内容从 ASCII 转换为 UTF-8。

    【讨论】:

      【解决方案2】:

      尝试使用htmlentities

      它将所有特殊字符转换为 HTML 实体。

      例如:

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

      将出局:

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

      任何遵循标准的 HTML 解析器都可以显示它们。

      【讨论】:

      • 不幸的是,当我将代码更改为此时,这不起作用:$message_content_POST = nl2br($_POST['message_content']); $message_content= htmlentities($message_content_POST);
      • $message_content 的输出是什么?你得到错误了吗?
      • 如果我发送一些带有特殊字符的文本,则输出为空。我确实收到了错误stderr: PHP message: PHP Warning: curl_setopt(): CURLOPT_FOLLOWLOCATION cannot be activated when an open_basedir is set in .../src/Mandrill.php on line 68 但是当我发送正常消息时我也会收到此错误...
      • 当我回显这个时:$string = 'ä - ë - ï - ö - ü - €'; echo htmlentities($string); 输出与输入相同 ä - ë - ï - ö - ü - € 这取决于 PHP 版本吗?我有 PHP 版本 5.4.37
      • 您应该在使用浏览器运行此程序时预料到这一点。检查浏览器 html 源代码而不是输出。
      猜你喜欢
      • 1970-01-01
      • 2012-12-23
      • 2015-06-07
      • 1970-01-01
      • 1970-01-01
      • 2017-04-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多