Blog de programación, errores, soluciones

Chose Language:
Author: Admin/Publisher |finished | checked

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.

project folder
composer require phpmailer/phpmailer

Para poder usar PHPMailer en nuestro archivo tendremos que agregar las siguientes líneas en la parte superior:

loading php mailer
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.

A PHPMailer Example
<?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 cuándo 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, por el hecho de que es muy probable que no quiera instalar un SMTP en su servidor.

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

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

isSMTP()

Seria para servidores SMTP como podrían ser MAILGUN, MassMailer, 1PointMail, sendinblue y para chequear se podría usar mailtrap.io

isMail()

el método isMail() nos permitirá utilizar la función 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 más en su página web proofpoint

isQmail()

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

Category: php
Something wrong? If you found an error or mistake in the content you can contact me on Twitter | @luisg2249_luis.
Last 4 post in same category