Wissensdatenbank
1 000 FAQs, 500 Anleitungen und erläuternde Videos. Hier gibt es nur Lösungen!
PHPMailer bei Infomaniak verwenden
Diese Anleitung erklärt, wie Sie PHPMailer mit den Webhosting-Diensten von Infomaniak verwenden, um E-Mails von einer Website aus zu versenden.
⚠ ACHTUNG ⚠
Infomaniak garantiert die Konformität seiner Dienste mit den Standardprotokollen (IMAP, S3 usw.), bietet aberkeine zusätzliche Unterstützung für externe Dienste oder Software, da deren Konfiguration je nach Anbieter oder Herausgeber variieren kann.Dieses Handbuch dient lediglich als Richtlinie, und die Umsetzung liegt in Ihrer Verantwortung (siehe: Supportrichtlinien / Art. 11.9 der AGB). Bei Bedarf kann Sie eine qualifizierte Fachkraft unterstützen.
Einleitung
- PHPMailer ist eine PHP-Bibliothek, mit der E-Mails von einer Website aus erstellt und versendet werden können, insbesondere über SMTP.
- Sie ermöglicht unter anderem das Versenden von Nachrichten im HTML-Format, das Hinzufügen einer alternativen Textversion, die Verwaltung von Anhängen und die Verwendung einer SMTP-Authentifizierung.
- Für den Versand authentifizierter E-Mails über SMTP muss die von der Website verwendete PHP-Umgebung mit einer aktuellen, verschlüsselten Verbindung kompatibel sein, insbesondere mit TLS 1.2 oder höher.
- Eine zu alte Version von PHP oder der von PHP verwendeten OpenSSL-Bibliothek kann zu einem Verbindungs- oder Authentifizierungsfehler führen, selbst wenn die E-Mail-Adresse und das Passwort korrekt sind.
- Verwenden Sie für diese Art von Versand nicht PHP 5.3/5.4; verwenden Sie eine aktuelle und unterstützte PHP-Version.
- Bei der authentifizierten SMTP-Übertragung muss die als Absender verwendete Adresse mit der für die SMTP-Authentifizierung verwendeten E-Mail-Adresse übereinstimmen.
PHPMailer installieren
Um PHPMailer zu verwenden, installieren Sie die Bibliothek in den Dateien Ihrer Website.
- Laden Sie PHPMailer von seinem offiziellen Repository herunter oder installieren Sie es mit Composer, falls Ihr Projekt dies verwendet.
- Kopieren Sie die PHPMailer-Dateien in ein Verzeichnis Ihrer Website per FTP.
Laden Sie die benötigten Dateien in Ihr PHP-Skript hoch und passen Sie den Pfad entsprechend dem gewählten Speicherort an:
use PHPMailer\PHPMailer\PHPMailer; use PHPMailer\PHPMailer\Exception; require **DIR** . '/PHPMailer/src/Exception.php'; require **DIR** . '/PHPMailer/src/PHPMailer.php'; require **DIR** . '/PHPMailer/src/SMTP.php';
Konfigurieren Sie den SMTP-Versand mit Infomaniak
Verwenden Sie die folgenden authentifizierten SMTP-Einstellungen:
- SMTP-Server:
mail.infomaniak.com - Port:
465 - Verschlüsselung:
SMTPS/ SSL-TLS - Authentifizierung: erforderlich
- Benutzername: die vollständige E-Mail-Adresse
- Passwort: Das Passwort der verwendeten E-Mail-Adresse
Beispiel für eine vollständige Konfiguration:
<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
require **DIR** . '/PHPMailer/src/Exception.php';
require **DIR** . '/PHPMailer/src/PHPMailer.php';
require **DIR** . '/PHPMailer/src/SMTP.php';
$mail = new PHPMailer(true);
try {
// Configuration SMTP
$mail->isSMTP();
$mail->Host = 'mail.infomaniak.com';
$mail->SMTPAuth = true;
$mail->Username = '[sender@domain.xyz](mailto:sender@domain.xyz)';
$mail->Password = 'mot_de_passe_de_l_adresse_mail';
$mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS;
$mail->Port = 465;
$mail->CharSet = 'UTF-8';
```
// Expéditeur
// L'adresse doit correspondre à celle utilisée pour l'authentification SMTP.
$mail->setFrom('sender@domain.xyz', 'Nom du site');
// Destinataire
$mail->addAddress('recipient@example.com');
// Adresse de réponse facultative
$mail->addReplyTo('sender@domain.xyz', 'Nom du site');
// Contenu du message
$mail->isHTML(true);
$mail->Subject = 'Message envoyé depuis le site';
$mail->Body = '<p>Contenu HTML du message.</p>';
$mail->AltBody = 'Contenu texte du message.';
$mail->send();
echo 'Message envoyé';
```
} catch (Exception $e) {
echo 'Le message n'a pas pu être envoyé. Erreur: ' . htmlspecialchars($mail->ErrorInfo);
}Wenn Ihre Anwendung die Verwendung von Port 587 erfordert, verwenden Sie STARTTLS:
$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
$mail->Port = 587;
PHP-Version und TLS-Kompatibilität überprüfen
Für die authentifizierte SMTP-Übertragung ist eine aktuelle, verschlüsselte Verbindung erforderlich. Wenn die Website eine zu alte PHP-Version verwendet, z. B. PHP 5.3, oder eine zu alte OpenSSL-Bibliothek, kann PHPMailer vor oder während der Authentifizierung fehlschlagen. Die resultierenden Fehlermeldungen können irreführend sein, z. B.:
SMTP connect() failedAuthentifizierung fehlgeschlagenstream_socket_enable_crypto()- ein Authentifizierungsfehler, obwohl das Passwort korrekt ist
Überprüfen Sie in diesem Fall Folgendes:
- die PHP-Version, die von der Website verwendet wird;
- die OpenSSL-Version, die von PHP verwendet wird;
- die in Ihrem Projekt verwendete PHPMailer-Version;
- die Übereinstimmung zwischen dem SMTP-Port und der gewählten Verschlüsselung.
Für eine zuverlässige Konfiguration verwenden Sie eine aktuelle PHP-Version, die mit TLS 1.2 oder höher kompatibel ist, sowie eine aktuelle Version von PHPMailer. Lesen Sie bei Bedarf diese Anleitungen:
- PHP-Version einer Website ändern
- Ein PHP-Problem im Zusammenhang mit einer veralteten Version beheben
- Technische Informationen der Website anzeigen
Fehler „Absender stimmt nicht überein“ beheben
Der Fehler Sender mismatch SMTP code: 550 Additional SMTP info: 5.7.1 kann auftreten, wenn die als Absender verwendete Adresse nicht mit der E-Mail-Adresse übereinstimmt, die für die SMTP-Authentifizierung verwendet wird. Ein Beispiel, das vermieden werden sollte:
$mail->Username = 'sender@domain.xyz';
$mail->setFrom('another-address@domain.xyz', 'Nom du site');In diesem Beispiel authentifiziert sich das Skript mit sender@domain.xyz, versucht aber, die Nachricht mit einer anderen Absenderadresse zu versenden.
Verwenden Sie dieselbe E-Mail-Adresse für die SMTP-Authentifizierung und als Absender:
$mail->Username = 'sender@domain.xyz';
$mail->setFrom('sender@domain.xyz', 'Nom du site');Der Absendernamen kann angepasst werden, die E-Mail-Adresse muss jedoch mit dem verwendeten SMTP-Konto übereinstimmen.
Beispiel für ein Kontaktformular
Wenn ein Besucher seine E-Mail-Adresse in einem Formular angibt, verwenden Sie diese nicht als Absenderadresse der Nachricht. Verwenden Sie stattdessen die authentifizierte E-Mail-Adresse als Absender und fügen Sie die Adresse des Besuchers als Antwortadresse hinzu.
Beispiel:
$mail->Username = 'sender@domain.xyz';
$mail->setFrom('sender@domain.xyz', 'Formulaire du site');
$mail->addReplyTo($email_visiteur);Diese Konfiguration ermöglicht es Ihnen, auf Anfragen von Besuchern über Ihr E-Mail-Programm zu antworten, ohne die Nachricht mit einer nicht autorisierten Absenderadresse zu versenden.
Debug-Modus vorübergehend aktivieren
Im Fehlerfall aktivieren Sie vorübergehend den Debug-Modus von PHPMailer, um detailliertere Informationen zur SMTP-Verbindung zu erhalten:
$mail->SMTPDebug = 2;
$mail->Debugoutput = 'html';Deaktivieren Sie diesen Modus nach Ihren Tests, um zu verhindern, dass technische Informationen für die Besucher der Website angezeigt werden.
Mehr erfahren
Link zu dieser FAQ: https://faq.infomaniak.com/576
War diese FAQ nützlich?