Envoyer des pièces jointes dans un courrier avec PHP
-
Envoyer des pièces jointes dans un e-mail avec
PHPMailer
-
Envoyer des pièces jointes dans un e-mail avec
SwiftMailer
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 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