Bonjour à tous
j'ai actuellement un problème avec un envoi de mail.
En effet, je n'arrive pas à envoyer de mail multipart.
Lorsque j'utilise le script php suivant, le mail est bien envoyé au destinataire mais le message est vide.
Le même script plus simple sans multipart (sans boundary) fonctionne très bien.
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 # -=-=-=- MIME BOUNDARY $mime_boundary = "----Test----".md5(time()); # -=-=-=- MAIL HEADERS $to = "moi@moi.com"; $subject = "Test"; $headers = "From: Our Company <company@ourcompany.com>\r\n"; $headers .= "Reply-To: Our Company <company@ourcompany.com>\r\n"; $headers .= "MIME-Version: 1.0\r\n"; $headers .= "Content-Type: multipart/alternative; boundary=\"$mime_boundary\"\r\n"; # -=-=-=- TEXT EMAIL PART $message = "--$mime_boundary\r\n"; $message .= "Content-Type: text/plain; charset=UTF-8\r\n"; $message .= "Content-Transfer-Encoding: 8bit\r\n\r\n"; $message .= "Test de mail.\r\n"; # -=-=-=- ATTACHMENT $message .= "--$mime_boundary\r\n"; $message .= 'Content-Type: application/pdf; name="test.pdf"'."\r\n"; $message .= 'Content-Transfer-Encoding: base64'."\r\n"; $message .= 'Content-Disposition:attachement; filename="test.pdf"'."\r\n\r\n"; $message .= chunk_split(base64_encode(file_get_contents('./test.pdf')))."\r\n"; $message .= "--$mime_boundary--\r\n\r\n"; # -=-=-=- SEND MAIL $mail_sent = @mail( $to, $subject, $message, $headers ); echo $mail_sent ? "Mail sent" : "Mail failed";
J'arrive à envoyer soit un mail avec du texte, soit un mail avec une pièce jointe mais pas les 2 à la fois.
En fait, lorsque je reçois le mail dans outlook et que je regarde le paramètre qui me sert de boundary, cela ne correspond pas à ce que j'ai mis dans mon script php...
Je pense que le problème vient de là mais je ne sais pas comment le résoudre.
Auriez-vous une idée ?
Merci d'avance
Voici les scripts qui fonctionne chez moi en environnement windows XP avec MovAmp.
et
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 # -=-=-=- MAIL HEADERS $to = "moi@moi.com"; $subject = "Test"; $headers = "From: Our Company <company@ourcompany.com>\r\n"; $headers .= "Reply-To: Our Company <company@ourcompany.com>\r\n"; $headers .= "MIME-Version: 1.0\r\n"; $headers .= "Content-Type: multipart/alternative;\r\n"; # -=-=-=- ATTACHMENT $message = 'Content-Type: application/pdf; name="test.pdf"'."\r\n"; $message .= 'Content-Transfer-Encoding: base64'."\r\n"; $message .= 'Content-Disposition:attachement; filename="test.pdf"'."\r\n\r\n"; $message .= chunk_split(base64_encode(file_get_contents('./test.pdf')))."\r\n"; # -=-=-=- SEND MAIL $mail_sent = @mail( $to, $subject, $message, $headers ); echo $mail_sent ? "Mail sent" : "Mail failed";
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 # -=-=-=- MAIL HEADERS $to = "moi@moi.com"; $subject = "Test"; $headers = "From: Our Company <company@ourcompany.com>\r\n"; $headers .= "Reply-To: Our Company <company@ourcompany.com>\r\n"; $headers .= "MIME-Version: 1.0\r\n"; $headers .= "Content-Type: multipart/alternative;\r\n"; # -=-=-=- TEXT EMAIL PART $message = "Content-Type: text/plain; charset=UTF-8\r\n"; $message .= "Content-Transfer-Encoding: 8bit\r\n\r\n"; $message .= "Test de mail.\r\n"; # -=-=-=- SEND MAIL $mail_sent = @mail( $to, $subject, $message, $headers ); echo $mail_sent ? "Mail sent" : "Mail failed";
Partager