Bonjour à tous, merci aux dévoués contributeurs.
Lors de l'envoi de mails le code <p>Un exemple de texte avec <strong><une partie en gras</strong>.</p> est réceptionné comme ceci: <p>Un exemple de texte avec .</p>
J'ai créé une classe fille de PHPMailer nommée UsePHPMailer. Je donne ici les codes de la classe fille et du code d'utilisation.
Classe fille dans classes/moimp/UsePHPMailer.php:et le code d'utilisation dans _essais.php:
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
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139 <?php namespace UsePHPMailer; require_once('vendor/phpmailer/phpmailer/src/PHPMailer.php'); require_once("vendor/phpmailer/phpmailer/src/SMTP.php"); require_once("vendor/phpmailer/phpmailer/src/Exception.php"); require_once("classes/moimp/StringTools.php"); use \PHPMailer\PHPMailer\PHPMailer; use \PHPMailer\PHPMailer\SMTP; use \Exception; class UsePHPMailer extends PHPMailer { protected $fromMail; protected $fromName; protected $languageDir; protected $language2; public function __construct(array $paramsBase) { extract($paramsBase); // VOIR LE CAS OU IL MANQUE DES VARIABLES if ( ! in_array($CharSet, ['utf-8', 'ASCII']) ) throw new Exception( sprintf("Params offset 'CharSet' in method '%s' must be 'utf-8' or 'ASCII'", __METHOD__) ); if (strlen($language) !== 2) throw new Exception( sprintf("Params offset 'language' in method '%s' must be a valid language code with 2-characters (see RFC 639-1).", __METHOD__) ); if ( ! is_dir($languageDir) ) throw new Exception( sprintf("Params offset 'languageDir' in method '%s' is no valid path. Path must be language path of PHPMailer.", __METHOD__) ); parent::__construct(true); $this->CharSet = $CharSet; $this->language2 = $language; $this->setLanguage($language, $languageDir); } public function setSMTP(array $paramsSMTP) { extract($paramsSMTP); // VOIR LE CAS OU IL MANQUE DES VARIABLES if ( ! in_array($SMTPDebug, [SMTP::DEBUG_OFF, SMTP::DEBUG_CLIENT, SMTP::DEBUG_SERVER]) ) throw new Exception( sprintf("Params offset 'SMTPDebug' must be one of values SMTP::DEBUG_OFF, SMTP::DEBUG_CLIENT or SMTP::DEBUG_SERVER in method '%s'.", __METHOD__) ); if ( ! is_string($Host) ) throw new Exception( sprintf("Params offset 'Host' must be a string in method '%s.", __METHOD__) ); if ( ! is_string($Username) ) throw new Exception( sprintf("Params offset 'Username' must be a string (oft based on email address of sender) in method '%s.", __METHOD__) ); if ( ! is_string($Password) ) throw new Exception( sprintf("Params offset 'password' must be a string in method '%s'.", __METHOD__) ); if ( ! is_bool($SMTPAuth) ) throw new Exception( sprintf("Params offset 'SMTPAuth' must be a boolean in method '%s'.", __METHOD__) ); if ( ! is_int($Port) ) throw new Exception( sprintf("Params offset 'port' must be an integer in method '%s'.", __METHOD__) ); $this->isSMTP(); $this->SMTPDebug= $SMTPDebug; $this->Host = $Host; $this->Port = $Port; $this->SMTPAuth = $SMTPAuth; $this->Username = $Username; $this->Password = $Password; } public function setContent(array $content) { extract($content); // VOIR LE CAS OU IL MANQUE DES VARIABLES if ( ! \StringTools::isMail($fromMail) ) throw new Exception(sprintf("Params offset 'fromMail' is not a valid mail in method '%s'.", __METHOD__) ); if ( ! is_string($fromMail) ) throw new Exception(sprintf("Params offset 'fromMail' must be a string in method '%s'.", __METHOD__) ); if ( ! is_string($fromName) ) throw new Exception(sprintf("Params offset 'fromName' must be a string in method '%s'.", __METHOD__) ); if ( ! is_string($Subject) ) throw new Exception(sprintf("Params offset 'Subject' must be a string in method '%s'.", __METHOD__) ); if ( ! is_string($Body) ) throw new Exception(sprintf("Params offset 'Body' must be a string in method '%s'.", __METHOD__) ); if ( ! is_string($AltBody) ) throw new Exception(sprintf("Params offset 'AltBody' must be a string in method '%s'.", __METHOD__) ); $html = <<<HTML <!DOCTYPE html> <html lang='%s'> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>%s</title> </head> <body> <div style="width: 640px; font-family: Arial, Helvetica, sans-serif; font-size: 12px;"> %s </div> </body> </html> HTML; $Body = sprintf($html, $this->language2, $Subject, $Body); $this->fromMail = $fromMail; $this->fromName = $fromName; $this->Subject = $Subject; $this->Body = $Body; $this->AltBody = $AltBody; } public function execute():string { $this->setFrom($this->fromMail, $this->fromName); var_dump($this); if( ! parent::send() ) { return "Email was not sent."; } else { return "Email was sent."; } } } class_alias('UsePHPMailer\UsePHPMailer', 'UsePHPMailer', false);EDIT: J'ai oublié de mettre le rapport de deboggage:
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 require_once("classes/moimp/UsePHPMailer.php"); require_once("vendor/phpmailer/phpmailer/src/SMTP.php"); use PHPMailer\PHPMailer\SMTP; $paramsBase = [ 'CharSet' =>'utf-8', 'language' =>'fr', 'languageDir' =>'vendor/phpmailer/phpmailer/language/', 'isHTML' =>true, ]; $paramsSMTP = [ 'SMTPDebug' =>SMTP::DEBUG_SERVER, 'Host' =>'smtp.orange.fr', 'Username' =>'exemple@orange.fr', 'Password' =>'password', 'SMTPAuth' =>true, 'Port' =>587, 'SMTPSecure'=>'TLS', ]; $content = [ 'fromMail' =>exemple@orange.fr', 'fromName' =>'Moimp', 'Subject' =>'Essai', 'Body' =>"<p>Un exemple de texte avec <strong><une partie en gras</strong>.</p>", 'AltBody' =>"Exemple de texte brut", ]; $test = new UsePHPMailer($paramsBase); $test->setSMTP($paramsSMTP); $test->addAddress('destinataire@free.fr', 'Prénom Nom'); $test->setContent($content); echo $test->execute();2023-07-11 13:46:59 SERVER -> CLIENT: 220 opmta1mto24nd1 smtp.orange.fr ESMTP server ready 2023-07-11 13:46:59 CLIENT -> SERVER: EHLO mp-tools 2023-07-11 13:46:59 SERVER -> CLIENT: 250-opmta1mto24nd1 hello [88.170.16.41], pleased to meet you250-HELP250-AUTH LOGIN PLAIN250-SIZE 46000000250-ENHANCEDSTATUSCODES250-PIPELINING250-8BITMIME250-STARTTLS250 OK 2023-07-11 13:46:59 CLIENT -> SERVER: STARTTLS 2023-07-11 13:46:59 SERVER -> CLIENT: 220 2.0.0 Ready to start TLS 2023-07-11 13:46:59 CLIENT -> SERVER: EHLO mp-tools 2023-07-11 13:46:59 SERVER -> CLIENT: 250-opmta1mto24nd1 hello [88.170.16.41], pleased to meet you250-HELP250-AUTH LOGIN PLAIN250-SIZE 46000000250-ENHANCEDSTATUSCODES250-PIPELINING250-8BITMIME250-STARTTLS250 OK 2023-07-11 13:46:59 CLIENT -> SERVER: AUTH LOGIN 2023-07-11 13:46:59 SERVER -> CLIENT: 334 VXNlcm5hbWU6 2023-07-11 13:46:59 CLIENT -> SERVER: [credentials hidden] 2023-07-11 13:46:59 SERVER -> CLIENT: 334 UGFzc3dvcmQ6 2023-07-11 13:46:59 CLIENT -> SERVER: [credentials hidden] 2023-07-11 13:46:59 SERVER -> CLIENT: 235 2.7.0 ... authentication succeeded 2023-07-11 13:46:59 CLIENT -> SERVER: MAIL FROM:<emetteur@orange.fr> 2023-07-11 13:46:59 SERVER -> CLIENT: 250 2.1.0 <emetteur@orange.fr> sender ok 2023-07-11 13:46:59 CLIENT -> SERVER: RCPT TO:<destinataire@free.fr> 2023-07-11 13:47:00 SERVER -> CLIENT: 250 2.1.5 <destinataire@free.fr> recipient ok 2023-07-11 13:47:00 CLIENT -> SERVER: DATA 2023-07-11 13:47:00 SERVER -> CLIENT: 354 OK 2023-07-11 13:47:00 CLIENT -> SERVER: Date: Tue, 11 Jul 2023 13:46:59 +0000 2023-07-11 13:47:00 CLIENT -> SERVER: To: Moi <destinataire@free.fr> 2023-07-11 13:47:00 CLIENT -> SERVER: From: Moimp <emetteu@orange.fr> 2023-07-11 13:47:00 CLIENT -> SERVER: Subject: Essai 2023-07-11 13:47:00 CLIENT -> SERVER: Message-ID: <rpP3JoHGIS0VYzIhCJMLoba7ZCghy2eEmukZ3vypSUs@mp-tools> 2023-07-11 13:47:00 CLIENT -> SERVER: X-Mailer: PHPMailer 6.8.0 (https://github.com/PHPMailer/PHPMailer) 2023-07-11 13:47:00 CLIENT -> SERVER: MIME-Version: 1.0 2023-07-11 13:47:00 CLIENT -> SERVER: Content-Type: multipart/alternative; 2023-07-11 13:47:00 CLIENT -> SERVER: boundary="b1=_rpP3JoHGIS0VYzIhCJMLoba7ZCghy2eEmukZ3vypSUs" 2023-07-11 13:47:00 CLIENT -> SERVER: Content-Transfer-Encoding: 8bit 2023-07-11 13:47:00 CLIENT -> SERVER: 2023-07-11 13:47:00 CLIENT -> SERVER: --b1=_rpP3JoHGIS0VYzIhCJMLoba7ZCghy2eEmukZ3vypSUs 2023-07-11 13:47:00 CLIENT -> SERVER: Content-Type: text/plain; charset=us-ascii 2023-07-11 13:47:00 CLIENT -> SERVER: 2023-07-11 13:47:00 CLIENT -> SERVER: Exemple de texte brut 2023-07-11 13:47:00 CLIENT -> SERVER: 2023-07-11 13:47:00 CLIENT -> SERVER: --b1=_rpP3JoHGIS0VYzIhCJMLoba7ZCghy2eEmukZ3vypSUs 2023-07-11 13:47:00 CLIENT -> SERVER: Content-Type: text/html; charset=us-ascii 2023-07-11 13:47:00 CLIENT -> SERVER: 2023-07-11 13:47:00 CLIENT -> SERVER: <!DOCTYPE html> 2023-07-11 13:47:00 CLIENT -> SERVER: <html lang='fr'> 2023-07-11 13:47:00 CLIENT -> SERVER: <head> 2023-07-11 13:47:00 CLIENT -> SERVER: <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 2023-07-11 13:47:00 CLIENT -> SERVER: <title>Essai</title> 2023-07-11 13:47:00 CLIENT -> SERVER: </head> 2023-07-11 13:47:00 CLIENT -> SERVER: <body> 2023-07-11 13:47:00 CLIENT -> SERVER: <div style="width: 640px; font-family: Arial, Helvetica, sans-serif; font-size: 12px;"> 2023-07-11 13:47:00 CLIENT -> SERVER: <p>Un exemple de texte avec <strong><une partie en gras</strong>.</p> 2023-07-11 13:47:00 CLIENT -> SERVER: </div> 2023-07-11 13:47:00 CLIENT -> SERVER: </body> 2023-07-11 13:47:00 CLIENT -> SERVER: </html> 2023-07-11 13:47:00 CLIENT -> SERVER: 2023-07-11 13:47:00 CLIENT -> SERVER: 2023-07-11 13:47:00 CLIENT -> SERVER: --b1=_rpP3JoHGIS0VYzIhCJMLoba7ZCghy2eEmukZ3vypSUs-- 2023-07-11 13:47:00 CLIENT -> SERVER: 2023-07-11 13:47:00 CLIENT -> SERVER: . 2023-07-11 13:47:00 SERVER -> CLIENT: 250 2.0.0 JDhkqHCqJP7mwJDhkqz79p mail accepted for delivery 2023-07-11 13:47:00 CLIENT -> SERVER: QUIT 2023-07-11 13:47:00 SERVER -> CLIENT: 221 2.0.0 opmta1mto24nd1 smtp.orange.fr closing connection
Partager