Bonjour,
J'ai créé une classe censée envoyer des mails au format "multipart/alternative" (texte + HTML) :
Lorsque je lis les mails envoyés, pour certains clients mail (Orange) le message s'affiche bien en HTML mais une pièce jointe est fournie (elle n'a pas de nom et ne contient rien) ! Pour d'autres clients (gmail), il n'y a carrément aucun contenu...
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 class T_Email extends T_Object { private $headers; private $boundary; private $subject; private $message; public function __construct( $subject , $message ) { parent::__construct( ); $this->subject = $subject; $this->boundary = md5(uniqid(mt_rand())); $this->headers = "MIME-Version: 1.0\r\n" . "Content-Type: multipart/alternative; boundary=\"" . $this->boundary . "\"\r\n"; $this->message = "--" . $this->boundary . "\r\n" . "Content-Type: text/plain; charset=\"" . T_Kernel::EMAIL_CHARSET . "\"\r\n" . "Content-Transfer-Encoding: 8bit\r\n\r\n" . strip_tags($message) . "\r\n\r\n" . "--" . $this->boundary . "\r\n" . "Content-Type: text/html; charset=\"" . T_Kernel::EMAIL_CHARSET . "\"\r\n" . "Content-Transfer-Encoding: 8bit\r\n\r\n" . $message . "\r\n\r\n" . "--" . $this->boundary . "\r\n"; } public function send( $to , $from = null ) { if ( ! is_null( $from ) ) { $this->headers .= "From: " . $from . "\r\n"; } return mail( $to , $this->subject , $this->message , $this->headers ); } }
La valeur de la constante T_Kernel::EMAIL_CHARSET est "utf-8" mais le problème est toujours présent avec d'autres charsets.
Où est la coquille ? Merci par avance !
Partager