Enviar archivos adjuntos en correo con PHP
-
Envíe archivos adjuntos en un correo electrónico con
PHPMailer
-
Envíe archivos adjuntos en un correo electrónico con
SwiftMailer
Introduciremos diferentes métodos para enviar archivos adjuntos por correo electrónico en PHP.
Envíe archivos adjuntos en un correo electrónico con PHPMailer
Podemos utilizar la clase PHPMailer
para enviar un correo electrónico, lo que nos permite enviar archivos adjuntos. Podemos crear un objeto de clase PHPMailer
y usar sus métodos y propiedades para enviar correos electrónicos a los destinatarios deseados. Usaremos Gmail para enviar un correo electrónico. Entonces, usaremos el protocolo SMTP
. La biblioteca tiene el método addAttachment()
que nos permite agregar archivos adjuntos. En primer lugar, necesitamos descargar la biblioteca de GitHub.
Por ejemplo, cree una carpeta src
y copie los tres archivos PHPMailer.php
, SMTP.php
y Exception.php
en ella. Luego cree un archivo index.php
y use la instrucción require
para incluir estos tres archivos. Luego utilizar las clases respectivas de estos archivos. A continuación, cree un objeto $mail
de la clase PHPMailer()
. Configure el correo electrónico y la contraseña del remitente con las propiedades Username
y Contraseña
. Utilice las propiedades Subject
y Body
para establecer el asunto y el cuerpo del correo electrónico. Agregue el archivo adjunto usando la función addAttachment()
. Proporcione la ruta relativa del archivo adjunto como parámetro del método. Escriba el correo electrónico del destinatario en el método AddAddress()
. Finalmente, llame al método Send()
para enviar el correo electrónico. A continuación, llame a smtpClose()
para cerrar la conexión SMTP
.
Necesitamos cambiar el correo electrónico del remitente para enviar un correo electrónico usando Gmail desde PHPMailer
. Debemos activar las opciones de acceso a Aplicaciones menos seguras en Gmail para usar el PHPMailer
. Luego, ejecutar el siguiente script enviará un correo electrónico y un archivo adjunto al destinatario.
Código de ejemplo:
<?php
require 'src/PHPMailer.php';
require 'src/SMTP.php';
require 'src/Exception.php';
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;
$mail = new PHPMailer();
$mail->isSMTP();
$mail->Host = "smtp.gmail.com";
$mail->SMTPAuth = "true";
$mail->SMTPSecure ="tls";
$mail->Port = "587";
$mail->Username = "sendersemail@gmail.com";
$mail->Password = "password";
$mail->SetFrom('sendersemail@gmail.com');
$mail->Subject = 'Message Subject';
$mail->Body = "This is a body text";
$mail->addAttachment('attachments/project.pdf');
$mail->AddAddress( 'receiversmail@gmail.com' );
$mail->Send();
$mail->smtpClose();
?>
Envíe archivos adjuntos en un correo electrónico con SwiftMailer
También podemos enviar un correo electrónico con archivos adjuntos utilizando la biblioteca de terceros SwiftMailer
. La biblioteca ofrece un método attach()
para agregar archivos adjuntos al enviar un correo electrónico. Podemos instalar la biblioteca usando el siguiente comando.
composer require "swiftmailer/swiftmailer:^6.0"
Necesitamos incluir el archivo autoloader.php
en nuestro script para trabajar con SwiftMailer
. El archivo se encuentra dentro de la carpeta vendor
del archivo descargado. Enviaremos el correo electrónico con Gmail. Para usar Gmail, necesitamos usar el protocolo SMTP
. Entonces, necesitamos crear un transporte con la clase Swift_SmtpTransport
para configurar el host, el número de puerto y el protocolo. Podemos configurar el correo electrónico y la contraseña del remitente utilizando el transporte. La clase Swift_Mailer
nos permite configurar el transporte, y la clase Swift_Mailer
nos permite configurar mensajes, destinatarios y archivos adjuntos.
Por ejemplo, requiera el archivo autoload.php
en el archivo de trabajo como vendor/autoload.php
. Cree un objeto $transport
de la clase Swift_SmtpTransport
y establezca el host como smtp.gmail.com
, el número de puerto como 587
y el protocolo de seguridad como tls
. Luego use los métodos setUsername
y setPassword
para configurar el correo electrónico y la contraseña del remitente. A continuación, cree un objeto $mail
de la clase Swift_Mailer
y establezca el objeto $transport
en él. Luego, cree otro objeto $content
de la clase Swift_Message
y escriba el asunto como parámetro. Utilice los métodos setFrom()
y setTo()
para especificar el correo electrónico del remitente y el del destinatario. Escriba el cuerpo del correo electrónico en el método setBody()
. Luego, use el método attach()
para especificar la ruta del adjunto usando el método fromPath()
de la clase Swift_Attachment
. Finalmente, use el objeto $mail
que creamos para enviar el correo electrónico con el método send()
. Proporcione el objeto $content
como parámetro del método send()
.
Así es como podemos enviar un correo electrónico con archivos adjuntos utilizando la biblioteca SwiftMailer
en PHP.
Código de ejemplo:
require_once 'vendor/autoload.php';
$transport = (new Swift_SmtpTransport('smtp.gmail.com', 587, 'tls'))
->setUsername('sendersemail@gmail.com')
->setPassword('password')
$mail = new Swift_Mailer($transport);
$content = (new Swift_Message('Subject'))
->setFrom(['sendersemail@gmail.com' => 'Senders Name'])
->setTo('recieversemail@gmail.com')
->setBody('This is a text')
->attach(Swift_Attachment::fromPath('attachments/project.pdf'));
$result = $mail->send($content);
Subodh is a proactive software engineer, specialized in fintech industry and a writer who loves to express his software development learnings and set of skills through blogs and articles.
LinkedIn