Почему часть электронного письма HTML отображается как текст в почтовом клиенте? - PullRequest
2 голосов
/ 26 июня 2011

Я пытаюсь отправлять электронные письма в формате HTML с классом электронной почты Codeigniter . Вот как я это делаю:

    $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, отображаемую в виде текста в верхней части письма, а остальная часть письма отображается нормально.

Здесь - это HTML-код, который я отправляю, это шаблон, который я нашел для тестирования. Строки с 1 по 19 отображаются как обычный текст и не отображаются.

Это как выглядит электронное письмо.

Почему это так?

Ответы [ 2 ]

2 голосов
/ 26 июня 2011

В качестве краткого изложения нашего разговора в комментариях к вопросу, проблема, по-видимому, заключается в содержании переменной $html. Переменная содержит сущность в кодировке HTML. Запуск через html_entity_decode решил проблему.

1 голос
/ 26 июня 2011

HTML-код не отображается, кажется, заголовок вашего шаблона.Возможно, в Gmail будет отображаться только код, найденный внутри тега body, поскольку Gmail является веб-приложением, поэтому он отображается на веб-странице, уже содержащей заголовок и тело (<html><head><body>).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...