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.

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";
Le même script plus simple sans multipart (sans boundary) fonctionne très bien.

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.

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";
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
 
# -=-=-=- 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";