En PHP existe una función de correo que te ayuda a enviar correos electrónicos, pero esta función tiene muchas limitaciones en su uso. Específicamente, los proveedores de alojamiento rara vez permiten enviar correos con esta función. Para manejar el envío de correos electrónicos, podemos utilizar bibliotecas de soporte como PHPMailer, Swiftmailer… PHPMailer es una biblioteca de correo multiusuario muy popular. Aquí guiaré sobre cómo enviar correos con PHPMailer.
Características de PHPMailer:
Enviar correos a través del protocolo SMTP.
Puedes usar fácilmente tu dirección de correo electrónico personal o la de tu empresa para aumentar la credibilidad del correo.
Envío rápido de correos, con menos errores, llegando directamente a la bandeja de entrada.
Puede agregar cc, bcc, adjuntar archivos.
Hay una interacción bidireccional, lo que significa que cuando un cliente responda al correo, recibirás el correo en tu bandeja de entrada.
Cosas que hacer:
- Tener una cuenta de Gmail
- Descargar la biblioteca PHPMailer para usar
- Configurar y enviar correos usando PHP
1. Primero necesitas una cuenta de Gmail para manejar el envío y recepción.
Necesitas editar la configuración ‘Activar el acceso de aplicaciones menos seguras’
Gestor de Cuentas de Google -> Seguridad -> Activar acceso»
2. Biblioteca PHPMailer
Descarga el código completo para descargar la biblioteca PHPMailer aquí: https://github.com/PHPMailer/PHPMailer
3. Configura y envía correos usando PHP«
<?php
// PHPMailer require
require_once __DIR__ . ‘/vendor/phpmailer/src/Exception.php’;
require_once __DIR__ . ‘/vendor/phpmailer/src/PHPMailer.php’;
require_once __DIR__ . ‘/vendor/phpmailer/src/SMTP.php’;
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;
$mail = new PHPMailer(true);
try {
// Server settings
$mail->SMTPDebug = SMTP::DEBUG_SERVER; // detail debug output
$mail->isSMTP();
$mail->Host = ‘smtp.gmail.com’;
$mail->SMTPAuth = true;
$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
$mail->Port = 587;
$mail->CharSet = “utf-8”; // Can read Japanese, Chinese, etc.
$mail->Encoding = “base64”;
$mail->Username = ‘your-email@gmail.com’; // your gmail email
$mail->Password = ‘your-gmail-password’; // your gmail password
// Sender settings
$mail->setFrom(‘your-email@gmail.com’, ‘Sender Name’);
// Recipient lists
$addreddToList = [‘recipient1-email-address’ => ‘Name Recipient 1’, ‘recipient2-email-address’ => ‘Name Recipient 2’, …];
$ccToList = [‘cc1-email-address’ => ‘Name cc1’, ‘cc1-email-address’ => ‘Name cc2’,…];
foreach ($addreddToList as $key => $emailTo) {
$mail->addAddress($key, $emailTo);
}
foreach ($ccToList as $key => $emailTo) {
$mail->AddCC($key, $emailTo);
}
// Setting the email content
$mail->IsHTML(true);
$subject = “Subject”;
$mail->Subject = $subject;
$mail->Body = ‘Body Content <b>bold format</b>….’;
$mail->AltBody = ‘This is the plain text’;
//Attachments
$mail->AddAttachment(‘/path/file.tar.gz’); // Add attachments
$mail->AddAttachment(‘/path/image.jpg’, ‘reservation_file_name.jpg’); // Optional name
// example:
// $attachfile = ‘attach-file-path/fileName.pdf’;
// $mail->AddAttachment($attachfile, ‘reservation_file_name.pdf’);
if ($mail->send()) {
echo “Email message sent.”;
}
} catch (Exception $e) {
echo “Error: {$mail->ErrorInfo}”;
}
?>