Kennisbank
1.000 veelgestelde vragen, 500 tutorials en uitlegvideo's. Hier vind je alleen maar oplossingen!
PHPMailer gebruiken op Infomaniak
Deze handleiding legt uit hoe u PHPMailer kunt gebruiken met de webhosting van Infomaniak om e-mails vanaf een website te verzenden.
⚠ LET OP ⚠
Infomaniak garandeert dat haar diensten voldoen aan de standaardprotocollen (IMAP, S3, enz.), maar biedt geen extra ondersteuning voor externe diensten of software, omdat de configuratie ervan kan veranderen afhankelijk van de leverancier of uitgever. Deze handleiding wordt daarom ter informatie verstrekt en de implementatie blijft uw verantwoordelijkheid (zie: Ondersteuningsbeleid / Art. 11.9 van de algemene voorwaarden). Indien nodig kan een gekwalificeerde persoon u hierbij helpen.
Inleiding
- PHPMailer is een PHP-bibliotheek waarmee u e-mails kunt maken en verzenden vanaf een website, onder andere via SMTP.
- Hiermee kunt u onder andere berichten in HTML-formaat verzenden, een alternatieve tekstversie toevoegen, bijlagen beheren en SMTP-authenticatie gebruiken.
- Voor een geverifieerde verzending via SMTP moet de PHP-omgeving die door de website wordt gebruikt, compatibel zijn met een recente versleutelde verbinding, met name TLS 1.2 of hoger.
- Een te oude versie van PHP of de OpenSSL-bibliotheek die door PHP wordt gebruikt, kan een verbindings- of authenticatiefout veroorzaken, zelfs als het e-mailadres en het wachtwoord correct zijn.
- Gebruik geen PHP 5.3/5.4 voor dit type verzending; gebruik een recente en onderhouden versie van PHP.
- Bij het gebruik van geverifieerde SMTP-verzending moet het als afzender gebruikte e-mailadres overeenkomen met het e-mailadres dat voor de SMTP-verificatie wordt gebruikt.
PHPMailer installeren
Om PHPMailer te gebruiken, installeert u de bibliotheek in de bestanden van uw website.
- Download PHPMailer van de officiële repository of installeer het met Composer als uw project dit gebruikt.
- Kopieer de PHPMailer-bestanden naar een map op uw website via FTP.
Laad de benodigde bestanden in uw PHP-script en pas het pad aan op basis van de gekozen locatie:
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';
SMTP-verzending configureren met Infomaniak
Gebruik de volgende geverifieerde SMTP-instellingen:
- SMTP-server:
mail.infomaniak.com - Poort:
465 - Versleuteling:
SMTPS/ SSL-TLS - Authenticatie: verplicht
- Gebruikersnaam: het volledige e-mailadres
- Wachtwoord: het wachtwoord van het gebruikte e-mailadres
Voorbeeld van een volledige configuratie:
<?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);
}Als uw applicatie het gebruik van poort 587 vereist, gebruikt u STARTTLS:
$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
$mail->Port = 587;
Controleer de PHP-versie en de TLS-compatibiliteit
Geverifieerde SMTP-verzending vereist een recente, versleutelde verbinding. Als de website een te oude versie van PHP gebruikt, bijvoorbeeld PHP 5.3, of een te oude OpenSSL-bibliotheek, kan PHPMailer mislukken, vóór of tijdens de authenticatie. De foutmeldingen kunnen dan misleidend zijn, bijvoorbeeld:
SMTP connect() failedCould not authenticatestream_socket_enable_crypto()- een authenticatiefout, terwijl het wachtwoord correct is
Controleer in dat geval de volgende punten:
- de PHP-versie die door de website wordt gebruikt;
- de OpenSSL-versie die door PHP wordt gebruikt;
- de PHPMailer-versie die door uw project wordt gebruikt;
- de overeenkomst tussen de SMTP-poort en de gekozen versleuteling.
Voor een betrouwbare configuratie gebruikt u een recente versie van PHP, die compatibel is met TLS 1.2 of hoger, en een actuele versie van PHPMailer. Raadpleeg indien nodig de volgende handleidingen:
- De PHP-versie van een website wijzigen
- Een PHP-probleem oplossen dat verband houdt met een verouderde versie
- De technische informatie van de website weergeven
Een 'Sender mismatch'-fout oplossen
De fout Sender mismatch SMTP code: 550 Additional SMTP info: 5.7.1 kan optreden wanneer het adres dat als afzender wordt gebruikt, niet overeenkomt met het e-mailadres dat wordt gebruikt voor de SMTP-authenticatie. Vermijd bijvoorbeeld het volgende:
$mail->Username = 'sender@domain.xyz';
$mail->setFrom('another-address@domain.xyz', 'Nom du site');In dit voorbeeld authenticeert het script met sender@domain.xyz, maar probeert het bericht te verzenden met een ander afzenderadres.
Gebruik hetzelfde e-mailadres voor de SMTP-authenticatie en als afzender:
$mail->Username = 'sender@domain.xyz';
$mail->setFrom('sender@domain.xyz', 'Nom du site');De naam van de afzender kan worden aangepast, maar het e-mailadres moet consistent blijven met het gebruikte SMTP-account.
Het geval van een contactformulier
Als een bezoeker zijn e-mailadres invult in een formulier, gebruik dit dan niet als afzenderadres van het bericht. Gebruik het geauthenticeerde e-mailadres als afzender en voeg het adres van de bezoeker toe als antwoordadres.
Voorbeeld:
$mail->Username = 'sender@domain.xyz';
$mail->setFrom('sender@domain.xyz', 'Formulaire du site');
$mail->addReplyTo($email_visiteur);Met deze configuratie kunt u antwoorden aan de bezoeker via uw e-mailprogramma, zonder het bericht te verzenden met een niet-geautoriseerd afzenderadres.
Tijdelijk de debugmodus activeren
In geval van een fout, activeer tijdelijk de debugmodus van PHPMailer om meer details te krijgen over de SMTP-verbinding:
$mail->SMTPDebug = 2;
$mail->Debugoutput = 'html';Schakel deze modus uit na uw tests, zodat er geen technische informatie aan de bezoekers van de website wordt getoond.
Meer informatie
Link naar deze veelgestelde vragen: https://faq.infomaniak.com/576
Is deze veelgestelde vragenlijst nuttig geweest?