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) 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)
Programme 1:
Fonctionne en mode manuel et en mode CRON
Soucis - va directement dans les spams et est converti au format texte brut
Programme 2:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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); } ?>
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.
J'ai cru comprendre que phpmailer dispose de nombreux avantages en parcourant le forum.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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); }
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é
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...
Question: Quelle est la plus value de l'authentification si les emails peuvent partir sans?
Partager