Fonction mail () + piece jointe

Résolu
sidf Messages postés 1216 Date d'inscription mardi 20 décembre 2005 Statut Membre Dernière intervention 18 octobre 2012 - 12 avril 2006 à 11:32
sidf Messages postés 1216 Date d'inscription mardi 20 décembre 2005 Statut Membre Dernière intervention 18 octobre 2012 - 14 avril 2006 à 12:08
bonjour à tous

j'essaie de joindre des fichiers à l'envoi d'un mail
j'ai intégré la classe mime_mail.class.php

et l'envoi de la pièce jointe s'effectue bien,
mais à l'ouverture du fichier joint, les données
sont totalement codées !
quelque chose m'a sans doute échappé

si quelqu'un sait d'où vient l'erreur,
merci d'avance

14 réponses

mehdisfr Messages postés 57 Date d'inscription dimanche 19 décembre 2004 Statut Membre Dernière intervention 21 novembre 2006
14 avril 2006 à 11:15
<?php
//-----------------------------------------------
//DECLARE LES VARIABLES
//-----------------------------------------------
$email_expediteur='votre_mail@fai.fr';
$email_reply='email_de_reponse@fai.fr';
$message_texte='Bonjour,'."n\n".'Voici un message au format texte';

$message_html='<html>
<head>
<title>Titre</title>
</head>

Test de message

</html>';

//-----------------------------------------------
//GENERE LA FRONTIERE DU MAIL ENTRE TEXTE ET HTML
//-----------------------------------------------

$frontiere = '-----=' . md5(uniqid(mt_rand()));

//-----------------------------------------------
//HEADERS DU MAIL
//-----------------------------------------------

$headers = 'From: "Anthony Rossetto" <'.$email_expediteur.'>'."\n";
$headers .= 'Return-Path: <'.$email_reply.'>'."\n";
$headers .= 'MIME-Version: 1.0'."\n";
$headers .= 'Content-Type: multipart/mixed; boundary="'.$frontiere.'"';

//-----------------------------------------------
//MESSAGE TEXTE
//-----------------------------------------------
$message = 'This is a multi-part message in MIME format.'."\n\n";

$message .= '--'.$frontiere."\n";
$message .= 'Content-Type: text/plain; charset="iso-8859-1"'."\n";
$message .= 'Content-Transfer-Encoding: 8bit'."\n\n";
$message .= $message_texte."\n\n";

//-----------------------------------------------
//MESSAGE HTML
//-----------------------------------------------
$message .= '--'.$frontiere."\n";

$message .= 'Content-Type: text/html; charset="iso-8859-1"'."\n";
$message .= 'Content-Transfer-Encoding: 8bit'."\n\n";
$message .= $message_html."\n\n";

//-----------------------------------------------
//PIECE JOINTE
//-----------------------------------------------
$message .= '--'.$frontiere."\n";

$message .= 'Content-Type: image/jpeg; name="nom_du_fichier.jpg"'."\n";
$message .= 'Content-Transfer-Encoding: base64'."\n";
$message .= 'Content-Disposition:attachement; filename="nom_du_fichier.jpg"'."\n\n";

$message .= chunk_split(base64_encode(file_get_contents('nom_du_fichier.jpg')))."\n";

mail($destinataire,$sujet,$message,$headers);
?>
3
raven44 Messages postés 315 Date d'inscription mercredi 23 mars 2005 Statut Membre Dernière intervention 21 mars 2011 1
12 avril 2006 à 11:37
Hello,

Il faut savoir que les pièces jointes sont souvent codés en BASE 64 la plupart du temps, si tu veux exploiter ta pièce jointe, il faut d'abord la décoder .
0
sidf Messages postés 1216 Date d'inscription mardi 20 décembre 2005 Statut Membre Dernière intervention 18 octobre 2012 5
12 avril 2006 à 11:48
merci pour ta reponse rapide
apparemment c'est mime_mail.class.php qui se charge d'encoder
mais je ne vois pas bien où décoder !!
voila ma page de test d'envoi (je n'ai pas touché à mime_mail.class.php )

<?php
require "mime_mail.class.php";
$fichier= fread(fopen("fichier.doc", "r"), filesize("fichier.doc"));
$mail = new mime_mail();
$mail->to = "
[mailto:xx@yy.fr xx@yy.fr
]"; // Adresse email de reception
$mail->subject = "Test envoi piece jointe"; // Sujet
$mail->body = "Ceci est un test====="; // Corps du message
$mail->from = "
[mailto:xx@yy.fr xx@yy.fr
]"; // Adresse email de l'expediteur (optionnel)
$mail->headers = "Date: "; // Entetes supplementaires (optionnel)
$mail->attach("$fichier", "fichier.doc"); // fichier attache (optionnel)
// envoi du message
$mail->send();
?>
0
raven44 Messages postés 315 Date d'inscription mercredi 23 mars 2005 Statut Membre Dernière intervention 21 mars 2011 1
12 avril 2006 à 12:04
en faite, ce qu'il faut faire, c'est lorsque tu extrait ta pièce jointe dans ton code, c'est à ce moment là que tu dois la décoder, là tu ne me montre que l'envoi.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
sidf Messages postés 1216 Date d'inscription mardi 20 décembre 2005 Statut Membre Dernière intervention 18 octobre 2012 5
12 avril 2006 à 12:49
merci encore mais là, j'avoue que je ne comprends pas



en fait je reçois bien le mail avec la piece jointe

dans outlook ou chez yahoo

et là c'est le logiciel client qui prend la main

quand je dble clique sur l'agrafe

je n'extrais pas moi même

donc je n'ai pas d'autre code ?..
0
raven44 Messages postés 315 Date d'inscription mercredi 23 mars 2005 Statut Membre Dernière intervention 21 mars 2011 1
12 avril 2006 à 12:57
D'accord, je comprend, quand tu envoi ton mail, il encode la pièce jointe naturellement en BASE 64 y'a de forte chance.

Donc l'erreur vient du faite que Word est incapable de décoder automatiquement l'encodage réalisé lors de l'envoi de ton mail. Il faudrait que tu précise le type "encoding" en BASE 64.
0
raven44 Messages postés 315 Date d'inscription mercredi 23 mars 2005 Statut Membre Dernière intervention 21 mars 2011 1
12 avril 2006 à 12:59
Un truc de ce genre : Content-Transfer-Encoding: base64
0
sidf Messages postés 1216 Date d'inscription mardi 20 décembre 2005 Statut Membre Dernière intervention 18 octobre 2012 5
12 avril 2006 à 14:08
merci
je vois, mais ou intervenir ? pas dans mime_mail.class.php ?
(je ne suis pas specialiste des classes ni de l'objet)

j'essaie ça à tout hasard dans l'envoi
$mail->headers = "Content-Transfer-Encoding: base64 ";
0
sidf Messages postés 1216 Date d'inscription mardi 20 décembre 2005 Statut Membre Dernière intervention 18 octobre 2012 5
12 avril 2006 à 14:10
j'ai immédiatement ça

Warning: mail(): SMTP server response: 550 5.7.1 [mailto:xx@yy xx@yy]... Relaying denied. IP name lookup failed [194.250.153.124] in c:\program files\easyphp1-8\www\XXX\pages\mime_mail.class.php on line 73
0
sidf Messages postés 1216 Date d'inscription mardi 20 décembre 2005 Statut Membre Dernière intervention 18 octobre 2012 5
12 avril 2006 à 14:12
en fait
le

Content-Transfer-Encoding: base64

est bien inclus dans mime_mail.class...
0
sidf Messages postés 1216 Date d'inscription mardi 20 décembre 2005 Statut Membre Dernière intervention 18 octobre 2012 5
12 avril 2006 à 14:59
comme par hasard le fournisseur smtp se met a bugger au même moment
donc ça n'a rien à voir
0
raven44 Messages postés 315 Date d'inscription mercredi 23 mars 2005 Statut Membre Dernière intervention 21 mars 2011 1
12 avril 2006 à 15:19
Etrange en effet.

Ce que tu peux faire c'est éviter d'utiliser mime_mail.class.
0
sidf Messages postés 1216 Date d'inscription mardi 20 décembre 2005 Statut Membre Dernière intervention 18 octobre 2012 5
14 avril 2006 à 12:07
ça marche,
merci beaucoup
0
sidf Messages postés 1216 Date d'inscription mardi 20 décembre 2005 Statut Membre Dernière intervention 18 octobre 2012 5
14 avril 2006 à 12:08
il manquait juste le destinataire
0
Rejoignez-nous