Envoyer des pièces jointes dans un courrier avec PHP

Subodh Poudel 30 janvier 2023
  1. Envoyer des pièces jointes dans un e-mail avec PHPMailer
  2. Envoyer des pièces jointes dans un e-mail avec SwiftMailer
Envoyer des pièces jointes dans un courrier avec PHP

Nous allons présenter différentes méthodes pour envoyer des pièces jointes dans un email en PHP.

Envoyer des pièces jointes dans un e-mail avec PHPMailer

Nous pouvons utiliser la classe PHPMailer pour envoyer un email, nous permettant d’envoyer des pièces jointes. Nous pouvons créer un objet de classe PHPMailer et utiliser ses méthodes et propriétés pour envoyer des e-mails aux destinataires souhaités. Nous utiliserons Gmail pour envoyer un e-mail. Nous utiliserons donc le protocole SMTP. La bibliothèque a la méthode addAttachment() qui nous permet d’ajouter des pièces jointes. Tout d’abord, nous devons télécharger la bibliothèque à partir de GitHub.

Par exemple, créez un dossier src et copiez-y les trois fichiers PHPMailer.php, SMTP.php et Exception.php. Créez ensuite un fichier index.php et utilisez l’instruction require pour inclure ces trois fichiers. Puis utilisez les classes respectives de ces fichiers. Ensuite, créez un objet $mail de la classe PHPMailer(). Définissez l’email et le mot de passe de l’expéditeur avec les propriétés Username et Password. Utilisez les propriétés Subject et Body pour définir l’objet et le corps de l’e-mail. Ajoutez la pièce jointe à l’aide de la fonction addAttachment(). Donnez le chemin relatif de la pièce jointe comme paramètre de la méthode. Écrivez l’e-mail du destinataire dans la méthode AddAddress(). Enfin, appelez la méthode Send() pour envoyer l’e-mail. Ensuite, appelez le smtpClose() pour fermer la connexion SMTP.

Nous devons changer l’e-mail de l’expéditeur pour envoyer des e-mails en utilisant Gmail à partir de PHPMailer. Nous devrions activer les options d’accès aux applications moins sécurisées dans Gmail pour utiliser le PHPMailer. Ensuite, l’exécution du script suivant enverra un e-mail et une pièce jointe au destinataire.

Exemple de code :

<?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();
?>

Envoyer des pièces jointes dans un e-mail avec SwiftMailer

Nous pouvons également envoyer un e-mail avec des pièces jointes en utilisant la bibliothèque tierce SwiftMailer. La bibliothèque propose une méthode attach() pour ajouter des pièces jointes lors de l’envoi d’un e-mail. Nous pouvons installer la bibliothèque en utilisant la commande suivante.

composer require "swiftmailer/swiftmailer:^6.0"

Nous devons inclure le fichier autoloader.php dans notre script pour travailler avec SwiftMailer. Le fichier se trouve dans le dossier vendeur du fichier téléchargé. Nous enverrons l’e-mail avec Gmail. Pour utiliser Gmail, nous devons utiliser le protocole SMTP. Nous devons donc créer un transport avec la classe Swift_SmtpTransport pour définir l’hôte, le numéro de port et le protocole. Nous pouvons définir l’e-mail et le mot de passe de l’expéditeur en utilisant le transport. La classe Swift_Mailer nous permet de définir le transport, et la classe Swift_Mailer nous permet de définir les messages, les destinataires et les pièces jointes.

Par exemple, exigez le fichier autoload.php dans le fichier de travail en tant que vendor/autoload.php. Créez un objet $transport de la classe Swift_SmtpTransport et définissez l’hôte comme smtp.gmail.com, le numéro de port comme 587 et le protocole de sécurité comme tls. Utilisez ensuite les méthodes setUsername et setPassword pour définir l’email et le mot de passe de l’expéditeur. Ensuite, créez un objet $mail de la classe Swift_Mailer et affectez-lui l’objet $transport. Ensuite, créez un autre objet $content de la classe Swift_Message et écrivez le sujet en paramètre. Utilisez les méthodes setFrom() et setTo() pour spécifier l’e-mail de l’expéditeur et l’e-mail du destinataire. Écrivez le corps de l’e-mail dans la méthode setBody(). Ensuite, utilisez la méthode attach() pour spécifier le chemin de la pièce jointe à l’aide de la méthode fromPath() de la classe Swift_Attachment. Enfin, utilisez l’objet $mail que nous avons créé pour envoyer l’e-mail avec la méthode send(). Fournissez l’objet $content comme paramètre de la méthode send().

C’est ainsi que nous pouvons envoyer un email avec des pièces jointes en utilisant la bibliothèque SwiftMailer en PHP.

Exemple de code :

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 Poudel avatar Subodh Poudel avatar

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