【问题标题】:Why is part of the HTML email appearing as text in email client?为什么 HTML 电子邮件的一部分在电子邮件客户端中显示为文本?
【发布时间】:2011-06-25 20:26:28
【问题描述】:

我正在尝试使用 Codeigniter 的 email class 发送 HTML 电子邮件。我就是这样做的:

    $config = Array(
        'protocol' => 'smtp',
        'smtp_host' => 'ssl://smtp.googlemail.com',
        'smtp_port' => 465,
        'smtp_user' => 'a@a.com',
        'smtp_pass' => 'password',
        'mailtype'  => 'html', 
        'charset'   => 'iso-8859-1'
    );
    
    $this->load->library('email', $config);
    $this->email->from('b@b.com', 'Me');
    $this->email->to($email); 
    $this->email->subject($subject);
    $this->email->message($html);
    $this->email->set_newline("\r\n"); 

    if($this->email->send()){
        return true;   
    }else{    
        return false;
    }

但是,当我在 Gmail 或 Outlook 中查看电子邮件时,我看到一堆 HTML 以文本形式出现在电子邮件顶部,而电子邮件的其余部分正常显示。

Here 是我发送的 HTML,它是我发现用来测试的模板。第 1 到 19 行显示为普通文本,不呈现。

This is 电子邮件的外观。

为什么会这样?

【问题讨论】:

  • 我只是想到了一些事情。当我通过他们发送时,这可能是一个 GMail 问题吗?如果是这样,我该如何克服?
  • @Alex - 你是什么意思?我已将mailtype 设置为html
  • @Abs - $html的内容是如何创建的?
  • @abs 这可能是 gmail 中的问题,也许。您是否尝试过通过您的服务器或其他电子邮件服务发送它?
  • @Abs - 看起来您的 $html 变量的内容已被放入 htmlentities 或其他一些函数。例如,您粘贴的信息应该是“$html 变量的代码吗?

标签: php html email codeigniter


【解决方案1】:

作为我们在问题 cmets 中对话的总结,问题似乎出在 $html 变量的内容上。该变量包含实体编码的 HTML。通过html_entity_decode 运行它解决了这个问题。

【讨论】:

  • 感谢弗朗索瓦一直支持我并帮助我!
【解决方案2】:

未呈现的 HTML 代码似乎是您模板的标题。也许 Gmail 只会显示标签 body 中的代码,因为 Gmail 是一个网络应用程序,所以它显示在已经包含标题和正文 (<html><head><body>) 的网页中。

【讨论】:

  • 我在 Outlook 中查看过同样的电子邮件,它也有同样的问题。但可能是 GMail 以不正确的方式发送它。
猜你喜欢
  • 2015-09-02
  • 2018-07-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多