html - example - smtp codeigniter
enviar correo html utilizando codeigniter (10)
Error en el contenido del correo usando SMTP en codeigniter En realidad, mi correo se envía con etiquetas HTML
y muestra las etiquetas HTML
que no son correctas.
$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 estoy enviando correo sin usar SMTP funciona bien. Cual es mi error
Úsalo así ... 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();
¡U lo intentarás! está trabajando para la mía después de mostrar muchos errores, está funcionando al 100%.
$subject = ''New message.'';
$config = Array(
''protocol'' => ''sendmail'',
''smtp_host'' => ''Your smtp host'',
''smtp_port'' => 465,
''smtp_user'' => ''webmail'',
''smtp_pass'' => ''webmail pass'',
''smtp_timeout'' => ''4'',
''mailtype'' => ''html'',
''charset'' => ''utf-8'',
''wordwrap'' => TRUE
);
$this->load->library(''email'', $config);
$this->email->set_newline("/r/n");
$this->email->set_header(''MIME-Version'', ''1.0; charset=utf-8'');
$this->email->set_header(''Content-type'', ''text/html'');
$this->email->from(''from mail address'', ''Company name '');
$data = array(
''message''=> $this->input->post(''message'')
);
$this->email->to($toEmail);
$this->email->subject($subject);
$body = $this->load->view(''email/sendmail.php'',$data,TRUE);
$this->email->message($body);
$this->email->send();
¿Puede por favor intentar con este código, B''z puedo enviar un correo electrónico 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);
}
A partir de CodeIgniter 3.x. Hay muchas características añadidas. Este ejemplo es casi igual con las 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 tienes plantilla de diseño. También puede incluir una plantilla en el método de message
como este ...
->message($this->load->view(''email_template'', $data, true))
Aquí, el primer parámetro es email_template.php
en su directorio de vistas, segundo parámetro los datos que se enviarán a la plantilla de correo electrónico, puede configurarlo ''''
o array()
o []
si no pasa ningún dato dinámico y el último parámetro es true
, usted toma los datos de la plantilla en lugar de la salida.
Espero que esto sea de ayuda.
Configurar el tipo de correo a HTML
funciona para mí:
$email_setting = array(''mailtype''=>''html'');
$this->email->initialize($email_setting);
Gmail impide el acceso a tu cuenta. Necesitas algunos cambios en tu gmail: -
Paso 1
Algunas aplicaciones y dispositivos utilizan una tecnología de inicio de sesión menos segura, lo que hace que su cuenta sea más vulnerable. Puede desactivar el acceso a estas aplicaciones, que recomendamos, o activar el acceso si desea usarlas a pesar de los riesgos.
Activar la aplicación menos segura
Paso 2
Habilitar estado IMAP
Habilitar estado POP
Intente configurar manualmente el encabezado de tipo de contenido haciendo esto:
$this->email->set_header(''Content-Type'', ''text/html'');
Eso resuelve el problema para mí.
Mi problema era que el filtrado XSS global de Codeigniter estaba codificando algunas etiquetas html como <html>
para que los clientes de correo electrónico ya no pudieran reconocerlas.
Para evitar esto, echa un vistazo a mi otro post .
Para enviar un correo electrónico HTML, primero debe redactar su mensaje en una variable y luego pasar esa variable al método "$ this-> email-> message ()" de codeigniter, como a continuación,
$this->load->library(''email'');
$message = "
<html>
<head>
<title>your title</title>
</head>
<body>
<p>Hello Sir,</p>
<p>Your message</p>
</body>
</html>";
$this->email->from(''email id'', ''name'');
$this->email->to(''email id'');
$this->email->subject(''email subject'');
$this->email->message($message);
if ($this->email->send()) {
print "success";
} else {
print "Could not send email, please try again later";
}
Espero que ayude.
¡¡disfrutar!!
Puede probar esta línea de código que establecerá el tipo de correo como HTML
:
$this->email->set_mailtype("html");