¿Cómo puedo habilitar el correo en WordPress?

4 minutos de lectura

Estoy usando Apache 2.2.25 y PHP 5.3.28 en mi escritorio de Windows 8. Una vez, cuando estaba recuperando mi contraseña de wordpress, recibí este error:

No se pudo enviar el correo electrónico. Posible motivo: es posible que su host haya deshabilitado la función mail().

Busqué en Google cómo puedo habilitar la función de correo (), descubrí que necesito configurar un servidor de correo con mi servidor. Descargué hMailServer, pero no funcionó… Por favor, ayúdenme, ¿cómo puedo habilitar la función mail()? ¿Qué servidor de correo tendré que descargar?

  • ¿Cuál es el exacto mensaje de error que tienes?

    –Álvaro González

    19 de julio de 2014 a las 13:44

  • Recibí este error: No se pudo enviar el correo electrónico. Posible motivo: es posible que su host haya deshabilitado la función mail().

    usuario3668837

    19 de julio de 2014 a las 13:50


  • Ese es un mensaje de WordPress, no de PHP. Edité la información en la pregunta y publiqué una respuesta (con suerte útil).

    –Álvaro González

    19/07/2014 a las 14:00

avatar de usuario
Simón Este

como yo publicado aquí:

Este es un mensaje de error súper molesto, ya que podría ser muchos cosas, y no revela el error real (que a menudo se silencia en otras partes del código).

Este error aparece cuando el wp_mail() función devuelve falso, que a su vez podría suceder si phpmailer->Send() devuelve falso o genera una excepción.

Cómo mostrar advertencias de PHP mail() función

Estos normalmente están silenciados de forma predeterminada y, lamentablemente, WordPress nunca los captura. Para mostrarlos, simplemente quite el @ signos de @mail(... en wp-includes/class-phpmailer.php en el mailPassthru() función:

if (ini_get('safe_mode') || !($this->UseSendmailOptions)) {
    $rt = @mail($to, $this->encodeHeader($this->secureHeader($subject)), $body, $header);
} else {
    $rt = @mail($to, $this->encodeHeader($this->secureHeader($subject)), $body, $header, $params);
}

Cómo buscar otras causas posibles:

  1. Agregue una sola línea al final de wp_mail() en /wp-includes/pluggable.php:

    // Send!
    try {
        return $phpmailer->Send();
    } catch ( phpmailerException $e ) {
        //------------- This next line is the one to add -------------------
        if (WP_DEBUG) echo '<pre>' . esc_html(print_r($e, TRUE)) . '</pre>';
        return false;
    }
    
  2. Volcará los detalles completos de dónde se generó la excepción. Desafortunadamente, a veces incluye este mensaje de excepción poco útil: “No se ha podido crear una instancia de la función de correo“. Sí, gracias WordPress, eso es realmente útil.

  3. Al observar la excepción, puede encontrar el número de línea del error y, con suerte, puede rastrearlo a través del código para encontrar la causa real.

Buena suerte. Esperemos que WordPress mejore el manejo de errores de correo electrónico en algún momento en el futuro.

  • ¿Dónde podemos proporcionar detalles SMTP del host para la cuenta de envío de correo predeterminada en wordpress?

    – immayankmodi

    20/03/2015 a las 16:30

Encontré este mismo problema y nada de lo que pude encontrar en ninguna de las sugerencias para WordPress lo resolvió por mí.

Luego me puse a investigar si era la propia instalación de PHP la que había deshabilitado la función de correo, pero tampoco funcionó nada de eso. Todo parecía estar configurado correctamente.

Todos estos problemas comenzaron para mí una vez que actualicé mi servidor a CentOS 7 que usa SELinux (Security Enhanced Linux) y lo que aprendí en las últimas semanas con SELinux es que si algo no funciona, pero todo parece debería estar funcionando… eso significa que SELinux lo está bloqueando silenciosa y secretamente en segundo plano.

y viola.

Si está ejecutando un sistema operativo que usa SELinux, simplemente ejecute el siguiente comando como root:

setsebool -P httpd_can_sendmail=1

Hay una configuración de seguridad que impide inherentemente que el servidor web envíe correos electrónicos. Cuando activa ese interruptor y le dice a SELinux que está bien que el servidor web envíe correos electrónicos, todo funciona de repente.

se llamó -Administrar identificadores de correo electrónico registrados para enviar correos a través de scripts (WordPress)

  1. Inicie sesión en su Cpanel.
  2. Vaya a la sección de correo electrónico > luego haga clic en ID de correo electrónico registrados.
  3. luego agregue (wordpress@yourdomain.com) o donde esté alojado su wordpress. es decir (wordpress@blog.tudominio.com) . luego envíe, se tarda unos minutos en activar, espere de 15 minutos a 1 hora dependiendo de su proveedor de alojamiento, luego funcionará.

¿Ha sido útil esta solución?