2012-02-01 26 views
19

Error en el contenido del correo usando SMTP en codeigniter En realidad, mi correo se envía con las etiquetas HTML y muestra las etiquetas HTML que no es correcta.enviar correo html usando 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(); 

Si envío correo sin utilizar SMTP, funciona bien. ¿Cuál es mi error?

+0

No creo 'ssl: //' es parte de un nombre de host. Tal vez hay otra configuración para activar SSL? –

+0

codeigniter html configuración de correo electrónico completa: http://stackoverflow.com/a/38740292/4376484 – Pran

Respuesta

66

Usted puede tratar de esta línea de código que establece el tipo de correo que ser para HTML:

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

gracias! esto funciona. – RY35

0

Mi problema era que de CodeIgniter Global Filtro XSS se codifica algunas etiquetas HTML como <html> por lo que los clientes de correo electrónico ya no pudo más tiempo reconocerlos.

Para evitar esto, vea mi otro post.

3

Ajuste del tipo de correo a HTML funciona para mí:

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

A partir de CodeIgniter 3.x. Hay muchas funciones agregadas. Este ejemplo es casi el mismo con versiones anteriores, pero puede hacer mucho más.

Siga el enlace para la documentación.

// 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(); 

Si tiene diseño de plantilla. También puede incluir la plantilla en message método como este ...

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

Aquí, el primer parámetro es email_template.php en el directorio de puntos de vista, el segundo parámetro de los datos que se enviarán a la plantilla de correo electrónico, se puede establecer '' o array() o [] si no pasa ningún dato dinámico y el último parámetro true asegúrese, toma los datos de la plantilla en lugar de la salida.

Espero que esto sea útil.

0

¿Puede intentar con este código, B'z puedo enviar un correo HTML con este código?

$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

utilizar de esta manera .. funciona muy bien para mí.

$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 previene el acceso de su cuenta. Necesita algunos cambios en su Gmail: -

Paso: 1

Algunas aplicaciones y dispositivos utilizan inicio de sesión menos segura la tecnología, lo que hace su cuenta más vulnerables. Puede desactivar el acceso para estas aplicaciones, que recomendamos, o activar el acceso si desea usarlas a pesar de los riesgos .

Turn on less secure app

Paso: 2

Habilitar IMAP Estado
Habilitar POP Estado

Enable IMAP and POP Status

Cuestiones relacionadas