2012-02-01 4 views
19

Ошибка в почтовом содержимом с использованием SMTP в codeigniter На самом деле, моя почта отправляется с тегами HTML, и она показывает неправильные теги HTML.отправить html-почту с помощью codeigniter

$config = Array(
'protocol' => 'smtp', 
     'smtp_host' => 'ssl://smtp.googlemail.com', 
     'smtp_port' => 465, 
     'smtp_user' => '[email protected]', 
     'smtp_pass' => '', 
     'mailtype' => 'html', 
     'charset' => 'utf-8', 
     'wordwrap' => TRUE 

    ); 
    $this->load->library('email', $config); 
    $this->email->set_newline("\r\n"); 
    $email_body ="<div>hello world</div>"; 
    $this->email->from('[email protected]', 'ddd'); 

    $list = array('[email protected]'); 
    $this->email->to($list); 
    $this->email->subject('Testing Email'); 
    $this->email->message($email_body); 

    $this->email->send(); 
    echo $this->email->print_debugger(); 

Если вы отправляете почту без использования SMTP, она работает нормально. Какая у меня ошибка?

+0

Я не думаю, 'ssl: //' является частью имени хоста. Может быть, есть еще одна настройка для включения SSL? –

+0

codeigniter полная html конфигурация электронной почты: http://stackoverflow.com/a/38740292/4376484 – Pran

ответ

66

Вы можете попробовать эту строку кода, который будет установлен тип почты, чтобы быть для HTML:

$this->email->set_mailtype("html"); 
+0

спасибо! это работает. – RY35

0

Мой вопрос был, что Глобальный XSS фильтрация CodeIgniter была кодирующая некоторые HTML-теги, как <html> так в почтовые клиенты могли не дольше их распознать.

Чтобы обойти это, ознакомьтесь с моим другом post.

3

Установка типа почты в HTML работает для меня:

$email_setting = array('mailtype'=>'html'); 
$this->email->initialize($email_setting); 
16

По CodeIgniter 3.x. Есть много функций. Этот пример почти аналогичен предыдущим версиям, но вы можете сделать гораздо больше.

Следуйте по ссылке для документации.

// load email library 
$this->load->library('email'); 

// prepare email 
$this->email 
    ->from('[email protected]', 'Example Inc.') 
    ->to('[email protected]') 
    ->subject('Hello from Example Inc.') 
    ->message('Hello, We are <strong>Example Inc.</strong>') 
    ->set_mailtype('html'); 

// send email 
$this->email->send(); 

Если у вас есть шаблон дизайна. Вы можете также включить шаблон в message способом, как это ...

->message($this->load->view('email_template', $data, true)) 

Здесь первый параметр является email_template.php в каталоге просмотров, второй параметр данные для отправки в шаблон электронной почты, вы можете установить его '' или array() или [], если не передавать какие-либо динамические данные и последний параметр true, убедитесь, что вы извлекаете данные шаблона вместо вывода.

Надеюсь, это полезно.

0

Вы можете попробовать с помощью этого кода, B'z Я могу отправить HTML-письмо с этим кодом.

$configemail = Array(
     'protocol' => 'smtp', 
     'smtp_host' => 'ssl://smtp.gmail.com', //mail.webconsort.com 
     'smtp_port' => 465, //5074 
     'smtp_user' => '[email protected]', //[email protected] 
     'smtp_pass' => 'XXXXXXXX', //'T0r0r1d3' 
     'mailtype' => 'html', 
     'charset' => 'iso-8859-1' 
    ); 

    $CI =& get_instance(); 

    $CI->load->library('email', $configemail); 

    $CI->email->initialize($configemail); 
    $CI->email->set_newline("\r\n"); 

    $CI->email->from($from, $fromName); 
    $CI->email->to($to); 

    $CI->email->subject($subject); 
    $CI->email->message($body); 
    if ($attachments != null && !empty($attachments)){ 
     foreach($attachments as $a){ 
      $CI->email->attach($a); 
     } 
    } 

    try{ 
     $CI->email->send(); 
     return true; 
    } 
    catch (Exception $e){ 
     //var_dump($e); 
    } 
0

Используйте его как это .. он отлично работает для меня.

$this->load->library('email'); 

$config['charset'] = 'iso-8859-1'; 

$config['wordwrap'] = TRUE; 

$config['mailtype'] = 'html'; 

$this->email->initialize($config); 

$this->email->from($fromemail); 

$this->email->to($toemail); 

$this->email->subject('Subject'); 

$this->email->message($html); 

$success=$this->email->send(); 
1

Gmail предотвращает доступ к вашей учетной записи. Вы нужны некоторые изменения на Gmail: -

Шаг: 1

Некоторые приложения и устройства используют менее безопасный входа в технологии, что делает ваш счет более уязвимыми. Вы можете отключить доступ к этим приложениям, , которые мы рекомендуем, или включите доступ, если вы хотите использовать их, несмотря на то, что риски несут .

Turn on less secure app

Шаг: 2

Включить IMAP Статус
Включить POP Статус

Enable IMAP and POP Status

Смежные вопросы