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 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