Blog de programación, errores, soluciones

Enviar emails con PHP – parte 2

En este apartado veremos como enviar emails con PHPMailer, clase la cual es definida por sus creadores como (full-featured email creation and transfer class for PHP).

En el tema anterior vimos la función mail() de PHP, pero no tratamos algunas de sus falencias, características que pueden ser las siguientes, encryption, authentication, HTML messages, and attachments.

Como vimos en el artículo anterior para realizar un mail con HTML simple, no demasiado elaborado ya teníamos que entrar a utilizar los encabezados mime y algún otro encabezado.

Instalación

PHPMailer lo puede instalar con composer sin problemas.

composer require phpmailer/phpmailer

Para poder usar PHPMailer en nuestro archivo tendremos que agregar las siguientes lineas en la parte superor:

use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;

// Load Composer's autoloader
require 'vendor/autoload.php';

el ejemplo que pone a nuestra disposición PHPMailer es el siguiente el cual explica bastante bien como mandar un mail y opciones que nos permite.

<?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\SMTP;
use PHPMailer\PHPMailer\Exception;

// Load Composer's autoloader
require 'vendor/autoload.php';

// Instantiation and passing `true` enables exceptions
$mail = new PHPMailer(true);

try {
    //Server settings
    $mail->SMTPDebug = SMTP::DEBUG_SERVER;                      // Enable verbose debug output
    $mail->isSMTP();                                            // Send using SMTP
    $mail->Host       = 'smtp.example.com';                    // Set the SMTP server to send through
    $mail->SMTPAuth   = true;                                   // Enable SMTP authentication
    $mail->Username   = 'user@example.com';                     // SMTP username
    $mail->Password   = 'secret';                               // SMTP password
    $mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;         // Enable TLS encryption; `PHPMailer::ENCRYPTION_SMTPS` encouraged
    $mail->Port       = 587;                                    // TCP port to connect to, use 465 for `PHPMailer::ENCRYPTION_SMTPS` above

    //Recipients
    $mail->setFrom('from@example.com', 'Mailer');
    $mail->addAddress('joe@example.net', 'Joe User');     // Add a recipient
    $mail->addAddress('ellen@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 = 'Here is the subject';
    $mail->Body    = 'This is the HTML message body <b>in bold!</b>';
    $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. Mailer Error: {$mail->ErrorInfo}";
}

Aunque no queda claro el cuando no quiero usar un SMTP, ya que el método que muestra es isSMTP(), pero seamos claro siempre o casi siempre vamos a querer que sea un SMTP particular, ya que es muy probable que no quiera installar un SMTP en su servidor.

En caso que necesite alguna de las otras opciones para enviar su email:

isSMTP(), isMail(), isSendmail(), isQmail()

isSMTP()

Seria para servidores SMTP como podrian ser MAILGUN, MassMailer, 1PointMail, sendinblue y para chequear se podria usar mailtrap.io

isMail()

el metodo isMail() nos permitira utilizar la funcion mail de PHP para enviar nuestro email

isSendMail()

Nos permite enviar nuestro email por sendmail(), este es un agente de transporte de correo (MTA – Mail Transport Agent) si desea puede averiguar mas en su pagina web proofpoint

isQmail()

Nos permite utilizar Qmail para enviar nuestro email, el cual es un servidor de correo electrónico hecho para UNIX.

Somethig wrong? If you found an error or mistake on the content you can contact me on twitter | @luisg2249_luis.
Last 4 post in same category