puedo - this-> email error
CodeIgniter no puede enviar correo electrónico utilizando el correo PHP() (11)
Estoy tratando de enviar un correo electrónico con Codeigniter así:
$this->load->library(''email'');
$this->email->from("[email protected]");
$this->email->reply_to("[email protected]");
$this->email->to("[email protected]");
$this->email->subject("Test mail");
$this->email->message("Email body");
$this->email->set_alt_message("Email body txt");
$this->email->send();
y obtuve esto en el depurador de correo electrónico: No se puede enviar correo electrónico utilizando PHP mail (). Es posible que su servidor no esté configurado para enviar correo usando este método.
Si realizo una función simple de correo PHP () con las mismas direcciones, funciona, pero cuando uso CodeIgniter me da el error. Entonces, ¿por qué funcionaría con correo simple () pero no con CodeIgniter? Algunas ideas ?
Gracias.
¿Tienes un archivo email.php en tu carpeta de configuración? Tal vez hay un problema con su configuración allí.
Agregue una variable de protocolo a la matriz de configuración y asígnele el valor "sendmail". El archivo email.php en la carpeta de configuración debe leerse como se muestra a continuación. La mía funciona así:
$config[''protocol''] = ''sendmail'';
$config[''mailtype''] = ''html'';
$config[''charset''] = ''utf-8'';
$config[''newline''] = "/r/n";
Asegúrese de nombre de dominio en
$this->email->from("myemail@**email.com**");
coincide con el nombre de dominio del servidor
Claramente, no parece haber una respuesta definitiva de "talla única". Lo que funcionó para mí fue cambiando.
$config[''protocol''] = ''smtp'';
A:
$config[''protocol''] = ''mail'';
Espero que esto ayude...
Leí un comentario en el archivo email.php:
// most documentation of sendmail using the "-f" flag lacks a space after it, however
// we''ve encountered servers that seem to require it to be in place.
return mail($this->_recipients, $this->_subject, $this->_finalbody, $this->_header_str, ''-f ''.$this->clean_email($this->_headers[''Return-Path'']));
"-f" flag - este problema !!!
Nadie parecía encontrar realmente una respuesta definitiva, así que investigué un poco y descubrí por qué.
en system /raries / Email.php, primero observe la línea 1552:
if ( ! mail($this->_recipients, $this->_subject, $this->_finalbody, $this->_header_str, "-f ".$this->clean_email($this->_headers[''From''])))
Parece enviar todo a todos los peachy como. También tuve los mismos síntomas exactos. Para ver si estaba loco, lo inserté inmediatamente antes ...
mail($this->_recipients, $this->_subject, $this->_finalbody)
así que básicamente eliminé todos los encabezados y dejé a PHP poner los valores predeterminados. ¡Bingo! Sin los encabezados de CI, funciona. Con los encabezados de CI, no es así. ¿Así que qué es lo?
Examinando un poco más, miré hacia donde se inicializa y usa html. Resulta que realmente no hace nada hasta alrededor de 1046, donde construye el cuerpo del mensaje.
de la línea 1048:
if ($this->send_multipart === FALSE)
{
$hdr .= "Content-Type: text/html; charset=" . $this->charset . $this->newline;
$hdr .= "Content-Transfer-Encoding: quoted-printable";
}
else
{
$hdr .= "Content-Type: multipart/alternative; boundary=/"" . $this->_alt_boundary . "/"" . $this->newline . $this->newline;
$body .= $this->_get_mime_message() . $this->newline . $this->newline;
$body .= "--" . $this->_alt_boundary . $this->newline;
$body .= "Content-Type: text/plain; charset=" . $this->charset . $this->newline;
$body .= "Content-Transfer-Encoding: " . $this->_get_encoding() . $this->newline . $this->newline;
$body .= $this->_get_alt_message() . $this->newline . $this->newline . "--" . $this->_alt_boundary . $this->newline;
$body .= "Content-Type: text/html; charset=" . $this->charset . $this->newline;
$body .= "Content-Transfer-Encoding: quoted-printable" . $this->newline . $this->newline;
}
Si se voltea send_multipart entre TRUE y FALSE, la clase de correo funcionará o no.
Miró a través de los documentos de clase de correo electrónico de Ignitor no revela nada. Yendo a la línea 52:
var $send_multipart = TRUE; // TRUE/FALSE - Yahoo does not like multipart alternative, so this is an override. Set to FALSE for Yahoo.
Así que ahí lo tienen. Posiblemente un error en la forma en que CI hace mensajes multiparte? La preferencia de configuración oculta
$config[''send_multipart''] = FALSE;
En el email.php parece hacer el truco.
Tenía el mismo problema, asegúrese de que su dirección "de" sea una dirección de correo electrónico válida.
Tenía un problema similar.
Eso es código de trabajo del controlador:
$config = array();
$config[''useragent''] = "CodeIgniter";
$config[''mailpath''] = "/usr/bin/sendmail"; // or "/usr/sbin/sendmail"
$config[''protocol''] = "smtp";
$config[''smtp_host''] = "localhost";
$config[''smtp_port''] = "25";
$config[''mailtype''] = ''html'';
$config[''charset''] = ''utf-8'';
$config[''newline''] = "/r/n";
$config[''wordwrap''] = TRUE;
$this->load->library(''email'');
$this->email->initialize($config);
$this->email->from($fromEmail, $fromName);
$this->email->to($email);
$this->email->subject(''Тест Email'');
$this->email->message($this->load->view(''email/''.$type.''-html'', $data, TRUE));
$this->email->send();
Tuve el mismo problema y, aunque me parece una tontería ahora, tuve algunas de las opciones de configuración de la matriz en mayúscula cuando todas tienen que estar en minúsculas:
estaba:
$mail_config[''smtp_host''] = ''mail.example.com'';
$mail_config[''smtp_port''] = ''587'';
$mail_config[''smtp_user''] = ''[email protected]'';
$mail_config[''smtp_pass''] = ''password'';
$mail_config[''smtp_crypto''] = ''TLS''; //ERROR
$mail_config[''protocol''] = ''SMTP''; //ERROR
$mail_config[''mailtype''] = ''HTML''; //ERROR
$mail_config[''send_multipart''] = FALSE;
$this->email->initialize($mail_config);
Fijo:
$mail_config[''smtp_host''] = ''mail.example.com'';
$mail_config[''smtp_port''] = ''587'';
$mail_config[''smtp_user''] = ''[email protected]'';
$mail_config[''smtp_pass''] = ''password'';
$mail_config[''smtp_crypto''] = ''tls''; //FIXED
$mail_config[''protocol''] = ''smtp''; //FIXED
$mail_config[''mailtype''] = ''html''; //FIXED
$mail_config[''send_multipart''] = FALSE;
$this->email->initialize($mail_config);
Eso funciono para mi
Vale la pena decir que si estás en WAMP (Windows) necesitarás tener instalado sendmail, de lo contrario no hay un método de envío SMTP predeterminado. Quería usar Gmail pero no podía porque simplemente no hay un mecanismo de correo predeterminado.
$config = Array(
''protocol'' => ''smtp'',
''smtp_host'' => ''ssl://smtp.googlemail.com'',
''smtp_port'' => 465,
''smtp_user'' => ''email'',
''smtp_pass'' => ''pass'',
''mailtype'' => ''html'',
''charset'' => ''iso-8859-1''
);
$this->load->library(''email'',$config);
**$this->email->set_newline("/r/n");** <- add this line
this code worked for me.