PHPMailer — Instalación en un servidor compartido

Generalidades

PHPMailer te permite enviar correos desde tu sitio a través de SMTP. Visita la página de GitHub de PHPMailer para obtener más detalles sobre lo que tiene para ofrecer.

Este artículo explica cómo instalar PHPMailer en un servidor Shared. Si tu sitio web está en un Servidor VPS o Dedicado, visita el siguiente artículo.

En los siguientes ejemplos, username sería tu usuario Shell y example.com tu sitio web.

Instalar PHPMailer

  1. Inicia sesión en tu servidor a través de SSH.
  2. Asegúrate de estar en el directorio principal de tu usuario.
    [server]$ cd ~
  3. Descarga el archivo zip de GitHub.com.
    [server]$ wget https://github.com/PHPMailer/PHPMailer/archive/master.zip
  4. Descomprime el archivo.
    [server]$ unzip master.zip
    Esto crea un directorio llamado PHPMailer-master.
  5. Renombra este directorio.
    [server]$ mv PHPMailer-master PHPMailer

Código básico de ejemplo para correo alojado en DreamHost

Crea un nuevo archivo de PHP y llámalo algo como phpmail.php

Puede tener cualquier nombre y ser ubicado en cualquier directorio.

Inserta el siguiente código en el archivo de PHP.

Solo necesitas actualizar el código en negrita.

nombre de usuario — Asegúrate de cambiar el campo 'username' a tu actual nombre de usuario Shell. También, puedes ver esto corriendo el siguiente comando.

[server]$ echo $USER
username

Host — Si estás enviando desde una dirección de DreamHost, debes usar solamente smtp.dreamhost.com. Si estás usando una dirección de Gmail, usa smtp.gmail.com.

UsernamesetFrom ambos deben ser un correo en el dominio desde el que estás enviando.

<?php
// Import PHPMailer classes into the global namespace
// These must be at the top of your script, not inside a function
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

require '/home/username/PHPMailer/src/Exception.php';
require '/home/username/PHPMailer/src/PHPMailer.php';
require '/home/username/PHPMailer/src/SMTP.php';

$mail = new PHPMailer(true);                              // Passing `true` enables exceptions
try {
    //Server settings
    $mail->SMTPDebug = 2;                                 // Enable verbose debug output
    $mail->isSMTP();                                      // Set mailer to use SMTP
    $mail->Host = 'smtp.dreamhost.com';                  // Specify main and backup SMTP servers
    $mail->SMTPAuth = true;                               // Enable SMTP authentication
    $mail->Username = 'contact@example.com';             // SMTP username
    $mail->Password = 'secret';                           // SMTP password
    $mail->SMTPSecure = 'ssl';                            // Enable SSL encryption, TLS also accepted with port 465
    $mail->Port = 465;                                    // TCP port to connect to

    //Recipients
    $mail->setFrom('contact@example.com', 'Mailer');          //This is the email your form sends From
    $mail->addAddress('recipient@dreamhost.com', 'Joe User'); // Add a recipient address
    //$mail->addAddress('contact@example.com');               // Name is optional
    //$mail->addReplyTo('info@example.com', 'Information');
    //$mail->addCC('cc@example.com');
    //$mail->addBCC('bcc@example.com');

    //Attachments
    //$mail->addAttachment('/var/tmp/file.tar.gz');         // Add attachments
    //$mail->addAttachment('/tmp/image.jpg', 'new.jpg');    // Optional name

    //Content
    $mail->isHTML(true);                                  // Set email format to HTML
    $mail->Subject = 'Subject line goes here';
    $mail->Body    = 'Body text goes here';
    //$mail->AltBody = 'This is the body in plain text for non-HTML mail clients';

    $mail->send();
    echo 'Message has been sent';
} catch (Exception $e) {
    echo 'Message could not be sent.';
    echo 'Mailer Error: ' . $mail->ErrorInfo;
}
?>

Se recomienda utilizar el puerto 465 con SSL como se muestra arriba.

Opcionalmente, puedes usar el puerto 587 con TLS.

Correr el archivo

El archivo que creaste es un archivo de PHP simple, por lo que se puede ejecutar así:

[server]$ php phpmail.php

Esto envía un correo a la dirección del destinatario que agregaste al script.

Usar PHPMailer en un formulario de contacto

El código anterior es un ejemplo simple que envía un correo cuando se ejecuta el script. La mayoría de las veces, se usa un formulario de contacto para enviar el correo. Revisa el siguiente enlace para ver un ejemplo del uso de PHPMailer en un formulario de contacto.

La siguiente página enumera ejemplos adicionales de otras formas en que podrías usar PHPMailer.

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

Si estás usando tu dirección de GMAIL para enviar a través de SMTP, primero debes permitir que tu aplicación acceda a tu dirección de GMAIL. Si no haces esto, tu correo no se autenticará y no se enviará. Mira el siguiente artículo para más detalles:

Ver también

¿Este artículo ha respondido sus preguntas?

Última actualización el PST.

¿Aún no encuentra lo que busca?