Generalidades
Este artículo describe cómo instalar PHPMailer en un servidor web Shared, lo que te permite enviar correos desde tu sitio a través de SMTP.
Si tu sitio web está en un VPS o un Servidor Dedicado, revisa este artículo.
Instalar PHPMailer
- Inicia sesión en tu servidor a través de SSH.
- Asegúrate de estar en el directorio principal de tu usuario.
[server]$ cd ~
- Descarga el archivo zip de GitHub.com.
[server]$ wget https://github.com/PHPMailer/PHPMailer/archive/master.zip
- Descomprime el archivo.
[server]$ unzip master.zip
- Renombra este directorio.
[server]$ mv PHPMailer-master PHPMailer
Creación y ejecución del script de correo
Crea un nuevo archivo PHP y nómbralo con un nombre como phpmailer.php. Puedes nombrar este archivo como quieras y colocarlo en cualquier directorio bajo tu usuario en el servidor.
Qué modificar en este ejemplo
- Solo necesitas actualizar el código en negrita.
- username — Asegúrate de cambiar username en las rutas de archivo por tu usuario de shell real. También puedes verlo ejecutando el comando echo $USER.
- Host — Si envías desde una dirección DreamHost, solo debes usar smtp.dreamhost.com. Si usas una dirección de Gmail, usa smtp.gmail.com..
- Username y setFrom — Estas variables deben ser un correo del dominio desde el que estás enviando.
Agrega el siguiente código al archivo de PHP.
<?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 = 'tls'; $mail->Port = 587; // 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; }
?>
Correr el archivo
Ejecuta el archivo usando este comando:
[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, sin embargo, la mayoría de las veces, se usa un formulario de contacto para enviar el correo. Revisa las páginas siguientes para ver ejemplos del uso de PHPMailer en un formulario de contacto.
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á. Revisa este artículo para más detalles: