Senden Anhänge in E-Mails mit PHP

Subodh Poudel 30 Januar 2023
  1. Anhänge in einer E-Mail mit PHPMailer versenden
  2. Anhänge in einer E-Mail mit SwiftMailer versenden
Senden Anhänge in E-Mails mit PHP

Wir werden verschiedene Methoden zum Senden von Anhängen in E-Mails in PHP vorstellen.

Anhänge in einer E-Mail mit PHPMailer versenden

Wir können die Klasse PHPMailer verwenden, um eine E-Mail zu versenden, die es uns ermöglicht, Anhänge zu versenden. Wir können ein Objekt der Klasse PHPMailer erstellen und dessen Methoden und Eigenschaften verwenden, um E-Mails an gewünschte Empfänger zu senden. Wir verwenden Gmail, um eine E-Mail zu senden. Wir werden also das Protokoll SMTP verwenden. Die Bibliothek verfügt über die Methode addAttachment(), mit der wir Anhänge hinzufügen können. Zuerst müssen wir die Bibliothek von GitHub herunterladen.

Erstellen Sie beispielsweise einen Ordner src und kopieren Sie die drei Dateien PHPMailer.php, SMTP.php und Exception.php hinein. Erstellen Sie dann eine Datei index.php und verwenden Sie die require-Anweisung, um diese drei Dateien einzubinden. Dann verwenden Sie die entsprechenden Klassen dieser Dateien. Als nächstes erstellen Sie ein Objekt $mail der Klasse PHPMailer(). Legen Sie E-Mail und Passwort des Absenders mit den Eigenschaften Benutzername und Passwort fest. Verwenden Sie die Eigenschaften Subject und Body, um den Betreff und den Text der E-Mail festzulegen. Fügen Sie den Anhang mit der Funktion addAttachment() hinzu. Geben Sie als Parameter der Methode den relativen Pfad des Anhangs an. Schreiben Sie die E-Mail des Empfängers in die Methode AddAddress(). Rufen Sie abschließend die Methode Send() auf, um die E-Mail zu versenden. Rufen Sie als nächstes smtpClose() auf, um die SMTP-Verbindung zu schließen.

Wir müssen die E-Mail-Adresse des Absenders ändern, um E-Mails mit Gmail von PHPMailer zu senden. Wir sollten die Zugriffsoptionen für weniger sichere Apps in Gmail aktivieren, um den PHPMailer zu verwenden. Wenn Sie dann das folgende Skript ausführen, werden eine E-Mail und ein Anhang an den Empfänger gesendet.

Beispielcode:

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

Anhänge in einer E-Mail mit SwiftMailer versenden

Wir können eine E-Mail mit Anhängen auch über die Drittanbieterbibliothek SwiftMailer versenden. Die Bibliothek bietet eine Methode attach(), um beim Versenden einer E-Mail Anhänge hinzuzufügen. Wir können die Bibliothek mit dem folgenden Befehl installieren.

composer require "swiftmailer/swiftmailer:^6.0"

Wir müssen die Datei autoloader.php in unser Skript einbinden, um mit SwiftMailer zu arbeiten. Die Datei befindet sich im Ordner vendor der heruntergeladenen Datei. Wir werden die E-Mail mit Gmail versenden. Um Gmail nutzen zu können, müssen wir das SMTP-Protokoll verwenden. Wir müssen also einen Transport mit der Klasse Swift_SmtpTransport erstellen, um den Host, die Portnummer und das Protokoll festzulegen. Wir können die E-Mail und das Passwort des Absenders mithilfe des Transports festlegen. Mit der Klasse Swift_Mailer können wir den Transport einstellen und mit der Klasse Swift_Mailer können wir Nachrichten, Empfänger und Anhänge einstellen.

Benötigen Sie beispielsweise die Datei autoload.php in der Arbeitsdatei als vendor/autoload.php. Erstellen Sie ein Objekt $transport der Klasse Swift_SmtpTransport und setzen Sie den Host als smtp.gmail.com, die Portnummer als 587 und das Sicherheitsprotokoll als tls. Verwenden Sie dann die Methoden setUsername und setPassword, um E-Mail und Passwort des Absenders festzulegen. Als nächstes erstellen Sie ein Objekt $mail der Klasse Swift_Mailer und setzen darauf das Objekt $transport. Erstellen Sie dann ein weiteres Objekt $content der Klasse Swift_Message und schreiben Sie den Betreff als Parameter. Verwenden Sie die Methoden setFrom() und setTo(), um die E-Mail des Absenders und des Empfängers anzugeben. Schreiben Sie den E-Mail-Body in die Methode setBody(). Verwenden Sie dann die Methode attach(), um den Anhangspfad mit der Methode fromPath() der Klasse Swift_Attachment anzugeben. Verwenden Sie abschließend das von uns erstellte Objekt $mail, um die E-Mail mit der Methode send() zu versenden. Geben Sie das Objekt $content als Parameter der Methode send() an.

So können wir mit der Bibliothek SwiftMailer in PHP eine E-Mail mit Anhängen versenden.

Beispielcode:

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