Comment obtenir le bon expéditeur avec mail() en PHP ? SMTP
Si vous utilisez la fonction mail() de PHP, l'expéditeur sera nomducompte@votredomaine.xx. Ce n'est pas modifiable et cela provoquera des erreurs ou fera considérer l'e-mail comme du spam.
Le mieux est d'utiliser SMTP. On trouve sur Internet de nombreuses classes PHP gratuites pour cela. L'e-mail est alors envoyé via SMTP et l'expéditeur peut être défini facilement.
Une option très répandue est PHPMailer
Il est également possible d'envoyer des e-mails directement via SMTP avec PEAR Mail. C'est surtout pratique pour les formulaires ou les scripts sur mesure.
https://pear.php.net/package/Mail
https://pear.php.net/package/Net_SMTP
https://pear.php.net/package/Auth_SASL
Exemple : envoyer un e-mail SMTP avec PEAR
<?php
error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED & ~E_STRICT);
// Charger PEAR Mail
require_once 'Mail.php';
// Paramètres SMTP
$smtp_host = 'ssl://mail.server.tld';
$smtp_port = 465;
$smtp_user = 'user@votre-entreprise.fr';
$smtp_pass = 'motdepasse';
// Données de l'e-mail
$to = 'destinataire@votre-entreprise.fr';
$from = 'user@votre-entreprise.fr';
$subject = 'Message de test';
$body = 'Ceci est un e-mail de test envoyé via SMTP.';
$reply = 'user@votre-entreprise.fr';
// En-têtes
$headers = array(
'From' => $from,
'To' => $to,
'Subject' => $subject,
'Reply-To' => $reply
);
// Objet SMTP
$smtp = Mail::factory('smtp', array(
'host' => $smtp_host,
'port' => $smtp_port,
'auth' => true,
'username' => $smtp_user,
'password' => $smtp_pass
));
// Envoyer l'e-mail
$result = $smtp->send($to, $headers, $body);
if (PEAR::isError($result)):
echo $result->getMessage();
else:
echo 'E-mail envoyé avec succès';
endif;
