¿Como envío correo PHP vía SMTP?

Visión General

Cuando usas la funcionalidad de correo PHP, estas enviando correo directamente desde tu servidor web. Esto puede causar inconvenientes en la dirección de REMITENTE si el correo no está bien configurado o si el mismo no está alojado en DreamHost. Enviar correos vía SMTP es recomendado que se envíe desde el servidor de correo más que el servidor web. Vé el artículo solucionando correos PHP para más detalles.

Aquí hay algunas opciones para enviar correo PHP vía SMTP. Por ejemplo:

  • Usar PHPmailer
  • Usar el paquete de correo PEAR

Este artículo explica como usar la opción PEAR.

Configurar PEAR para enviar correo

Los siguientes pasos te guiarán en cómo habilitarlo.

  1. Visita el artículo PEAR para instalarlo en tu servidor web.
  2. Instala los paquetes necesarios de correo PEAR. Visita solucionando PEAR para más instrucciones. Por ejemplo, necesitas instalar los paquetes Mail and Net_SMTP:
    [server]$ pear install --alldeps Mail
    
  3. Crea un archivo PHP que usa PEAR para enviar correo vía SMTP.

Configurar PHP para enviar correo SMTP

El siguiente paquete puede ser usado para enviar correo SMTP usando el paquete PEAR de correo. (Mail PEAR)

Solo necesitas llenar los campos que están en negrita.

Encontrar tu nombre de alojamiento de correo

Asegúrate de usar el nombre de servidor de correo para el nombre de alojamiento de correo. Este puede ser imap.dreamhost.com o pop.dreamhost.com, dependiendo del tipo de conección que tu prefieras. El siguiente ejemplo usa el nombre de alojamiento (hostname) 'imap.dreamhost.com'.

<?php

error_reporting(E_ALL ^ E_NOTICE ^ E_DEPRECATED ^ E_STRICT);

set_include_path("." . PATH_SEPARATOR . ($UserDir = dirname($_SERVER['DOCUMENT_ROOT'])) . "/pear/php" . PATH_SEPARATOR . get_include_path());
require_once "Mail.php";

$host = "ssl://smtp.dreamhost.com";
$username = "tucorreo@example.com";
$password = "la contraseña de tu correo";
$port = "465";
$to = "correo_destinatario@example.com";
$email_from = "tucorreo@example.com";
$email_subject = "Línea de asunto aquí:";
$email_body = "Lo que tu quieras";
$email_address = "responder-a@example.com";

$headers = array ('From' => $email_from, 'To' => $to, 'Subject' => $email_subject, 'Reply-To' => $email_address);
$smtp = Mail::factory('smtp', array ('host' => $host, 'port' => $port, 'auth' => true, 'username' => $username, 'password' => $password));
$mail = $smtp->send($to, $headers, $email_body);

if (PEAR::isError($mail)) { echo("<p>" . $mail->getMessage() . "</p>"); } else { echo("<p>Message successfully sent!</p>"); } ?>

Si estás usando Google como tu alojamiento de correo, debes cambiar la línea $host por lo siguiente:

$host = "ssl://smtp.gmail.com";

Permitir a GMAIL que envíe correos desde tu aplicación de correos

Si estás usando un correo de GMAIL para enviar correos vía SMTP, debes primero habilitar el acceso a tu correo de GMAIL a tu aplicación. Si no haces esto, tu correo no se autenticará y no se enviará. Mira este artículo para más detalles.

Ver también

¿Este artículo ha respondido sus preguntas?

Última actualización el PST.