Envoi email avec php mailer
Bonjour à toutes et à tous,
Je souhaite envoyer des emails en automatique pour mon site via le serveur ou ce dernier est hébergé (OVH).
Pour cela, je me sers de CRON.
J'ai réalisé de nombreux tests (à mon niveau de connaissance :oops:) pour m'assurer que cela fonctionne.
Suite à de nombreuses déconvenues, j'ai abouties à deux programmes qui fonctionnent très bien en mode manuel.
Et 50% de réussite en mode CRON...
Le premier programme était pour vérifier que la transmission d’e-mails fonctionnait.
Le second, pour continuer à manipuler php mailer (qui me pose de nombreux soucis car je ne comprends tout :aie:)
Programme 1:
Fonctionne en mode manuel et en mode CRON
Soucis - va directement dans les spams et est converti au format texte brut
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
| <?php
$to = "xxxx@x.com";
$from = "yyyy@y.com";
ini_set("SMTP", "smtp.nomdomain.com");
$JOUR = date("Y-m-d");
$HEURE = date("H:i");
$Subject = "Test Mail - $JOUR $HEURE";
$mail_Data = "";
$mail_Data .= "<html> \n";
$mail_Data .= "<head> \n";
$mail_Data .= "<title> Subject </title> \n";
$mail_Data .= "</head> \n";
$mail_Data .= "<body> \n";
$mail_Data .= "Mail HTML simple : <b>$Subject </b> <br> \n";
$mail_Data .= "<br> \n";
$mail_Data .= "bla bla <font color=red> bla </font> bla <br> \n";
$mail_Data .= "Etc.<br> \n";
$mail_Data .= "</body> \n";
$mail_Data .= "</HTML> \n";
$headers = "MIME-Version: 1.0 \n";
$headers .= "Content-type: text/html; charset=iso-8859-1 \n";
$headers .= "From: $from \n";
$headers .= "Disposition-Notification-To: $from \n";
// Message de Priorité haute
// -------------------------
$headers .= "X-Priority: 1 \n";
$headers .= "X-MSMail-Priority: High \n";
$CR_Mail = TRUE;
$CR_Mail = @mail ($to, $Subject, $mail_Data, $headers);
if ($CR_Mail === FALSE)
{
//On récupère le contenu du fichier
$texte = file_get_contents('./script_auto/test_email.txt');
//On ajoute notre nouveau texte à l'ancien
$today = date("Y-m-d H:i:s");
$texte .= "\n*";
$texte .= 'Email non transmis à: '.$today;
//On écrit tout le texte dans notre fichier
file_put_contents('./script_auto/test_email.txt', $texte);
}
else
{
//On récupère le contenu du fichier
$texte = file_get_contents('./script_auto/test_email.txt');
//On ajoute notre nouveau texte à l'ancien
$today = date("Y-m-d H:i:s");
$texte .= "\n*";
$texte .= 'Erreur - Email transmis à: '.$today;
//On écrit tout le texte dans notre fichier
file_put_contents('./script_auto/test_email.txt', $texte);
}
?> |
Programme 2:
Fonctionne en mode manuel
Est envoyé dans les spams en mode manuel
Ne fonctionne pas en mode CRON
En revanche mon fichier txt me dit que le message a bien été envoyé. Mais il n'arrive jamais dans la boite e-mail.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
| <?php
use PHPMailer\PHPMailer\PHPMailer; //? Aucune idée sur l'utilité de cela
use PHPMailer\PHPMailer\Exception; //? Aucune idée sur l'utilité de cela
use PHPMailer\PHPMailer\SMTP; //? Aucune idée sur l'utilité de cela
require_once "./script_auto/PHPMailer/Exception.php";
require_once "./script_auto/PHPMailer/PHPMailer.php";
require_once "./script_auto/PHPMailer/SMTP.php";
//Create a new PHPMailer instance
$mail = new PHPMailer();
//Set who the message is to be sent from
$mail->setFrom('yyyy@yyy.yyyy', 'BOU59000');
//Set who the message is to be sent to
$mail->addAddress('xxxx@x.com', 'YOU59000');
//Set the subject line
$mail->Subject = 'PHPMailer mail() test';
//Read an HTML message body from an external file, convert referenced images to embedded,
//convert HTML into a basic plain-text alternative body
$mail->msgHTML='<strong>Message html</strong>';
//Replace the plain text body with one created manually
$mail->AltBody = 'This is a plain-text message body';
//send the message, check for errors
if (!$mail->send()) {
//On récupère le contenu du fichier
$texte = file_get_contents('./script_auto/test_email_phpmailer.txt');
//On ajoute notre nouveau texte à l'ancien
$today = date("Y-m-d H:i:s");
$texte .= "\n*";
$texte .= 'Email transmis à: '.$today;
//On écrit tout le texte dans notre fichier
file_put_contents('./script_auto/test_email_phpmailer.txt', $texte);
} else {
//On récupère le contenu du fichier
$texte = file_get_contents('./script_auto/test_email_phpmailer.txt');
//On ajoute notre nouveau texte à l'ancien
$today = date("Y-m-d H:i:s");
$texte .= "\n*";
$texte .= 'Email non transmis à: '.$today;
//On écrit tout le texte dans notre fichier
file_put_contents('./script_auto/test_email_phpmailer.txt', $texte);
} |
J'ai cru comprendre que phpmailer dispose de nombreux avantages en parcourant le forum.
L'idée serait donc de pouvoir aboutir à une solution php mailer qui:
. Fonctionne en CRON
. N'arrive pas dans les spams
Et je viens a vous car j'ai tourné le problème dans beaucoup de sens et je suis coincé :oops:
D'avance merci pour votre aide
*Pour la partie authentification php mailer, pour le moment je mets de côté que ça plantait en mode manuel et automatique... :aie:
Question: Quelle est la plus value de l'authentification si les emails peuvent partir sans?