PHP : generer un fichier.csv et l'envoyer en piece jointe : prob
diode80
Messages postés
138
Date d'inscription
Statut
Membre
Dernière intervention
-
diode80 Messages postés 138 Date d'inscription Statut Membre Dernière intervention -
diode80 Messages postés 138 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
sur une page web, j'ai un formulaire, je récupérè les données que j'écris dans une feuille "excel" pour que tout le monde comprenne.
Je veux recevoir ce formulaire CSV par email en tant que piece jointe.
la feuille se nomme : 20150215-test.csv
Apres la page php m'envoie cette feuille csv par email.
PROBLEME : le fichier n'est pas en piece jointe, mais les caractères sont en vrac dans le mail....
Voici ce que je vois dans l'email reçu:
--PHP-mixed-239191cd5886d9ac2498b082ce279c9f
Content-Type: application/vnd.ms-excel; name=20150215-test.csv
Content-Transfer-Encoding: base64
Content-Disposition: attachment
MjAxNTAyMTRfMTBfMThfNDIuY3N2O3RpdHJlO2N1c19jaXY7Y3VzX25vbTtjdXNfZnVuYztjdXNf
dGVsO2N1c19lbWFpbDtwcmpfY291bnRyeTtwcmpfZW5kdXNlcjtwcmpfc3RhdHVzO3Byal9sZWFk
dGltZTtwcmpfYW1sLWF2bDtwcmpfZGVhZGxpbmU7YXBwX21hcmtldDthcHBfcHJlc3N1cmU7YXBw
X3RlbXA7YXBwX3NlcnZpY2U7dmFsX2NvbS1jb2RlO3ZhbC10YWc7dmFsLXF0eTt2YWwtcGlwaW5n
LWNsYXM7dmFsLW5hY2U7VmFsLVR5cGU7cHZhbC1ib25uZXQ7dmFsLUROO3ZhbC1ib3JlO3ZhbC1y....... (il y en a deux pages !)
Le souci doit se situer SOIT à la génération du mail, soit à l'entête du mail....
Voici mon code :
Question subsidiaire :
sur iphone, pas de piece jointe : du charabia dans le texte...
sur gmail, pas de piece jointe : du charabia dans le texte
sur outlook 2010 : le mail est parfait et la piece jointe .csv est bien attaché...
Toutes les pistes d'aides sont les bienvenues....
EDIT : AJOUT DES BALISES DE CODE
Merci de bien vouloir utiliser la coloration syntaxique (les balises de code) lorsque tu postes du code sur le forum.
Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code
sur une page web, j'ai un formulaire, je récupérè les données que j'écris dans une feuille "excel" pour que tout le monde comprenne.
Je veux recevoir ce formulaire CSV par email en tant que piece jointe.
la feuille se nomme : 20150215-test.csv
Apres la page php m'envoie cette feuille csv par email.
PROBLEME : le fichier n'est pas en piece jointe, mais les caractères sont en vrac dans le mail....
Voici ce que je vois dans l'email reçu:
--PHP-mixed-239191cd5886d9ac2498b082ce279c9f
Content-Type: application/vnd.ms-excel; name=20150215-test.csv
Content-Transfer-Encoding: base64
Content-Disposition: attachment
MjAxNTAyMTRfMTBfMThfNDIuY3N2O3RpdHJlO2N1c19jaXY7Y3VzX25vbTtjdXNfZnVuYztjdXNf
dGVsO2N1c19lbWFpbDtwcmpfY291bnRyeTtwcmpfZW5kdXNlcjtwcmpfc3RhdHVzO3Byal9sZWFk
dGltZTtwcmpfYW1sLWF2bDtwcmpfZGVhZGxpbmU7YXBwX21hcmtldDthcHBfcHJlc3N1cmU7YXBw
X3RlbXA7YXBwX3NlcnZpY2U7dmFsX2NvbS1jb2RlO3ZhbC10YWc7dmFsLXF0eTt2YWwtcGlwaW5n
LWNsYXM7dmFsLW5hY2U7VmFsLVR5cGU7cHZhbC1ib25uZXQ7dmFsLUROO3ZhbC1ib3JlO3ZhbC1y....... (il y en a deux pages !)
Le souci doit se situer SOIT à la génération du mail, soit à l'entête du mail....
Voici mon code :
<?php //$strPath = ""; $filName = $myFile; //define the receiver of the email $to = 'xxxx@xxxxx.xx'; //define the subject of the email $subject = $myFile; //create a boundary string. It must be unique //so we use the MD5 algorithm to generate a random hash $random_hash = md5(date('r', time())); //define the headers we want passed. Note that they are separated with \r\n $headers = "From: xxxxemeteur@xxxx.be\r\nReply-To: xxxx@xxxxx.xx"; //add boundary string and mime type specification $headers .= "\r\nContent-Type: multipart/mixed; boundary=\"PHP-mixed-".$random_hash."\""; //read the atachment file contents into a string, //encode it with MIME base64, //and split it into smaller chunks $attachment = chunk_split(base64_encode(file_get_contents($filName))); //define the body of the message. ob_start(); //Turn on output buffering ?>
Question subsidiaire :
sur iphone, pas de piece jointe : du charabia dans le texte...
sur gmail, pas de piece jointe : du charabia dans le texte
sur outlook 2010 : le mail est parfait et la piece jointe .csv est bien attaché...
Toutes les pistes d'aides sont les bienvenues....
EDIT : AJOUT DES BALISES DE CODE
Merci de bien vouloir utiliser la coloration syntaxique (les balises de code) lorsque tu postes du code sur le forum.
Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code
A voir également:
- PHP : generer un fichier.csv et l'envoyer en piece jointe : prob
- Easy php - Télécharger - Divers Web & Internet
- Expert php pinterest - Télécharger - Langages
- Retour a la ligne php - Forum Webmastering
- Alert php - Forum PHP
- Retour a la ligne php ✓ - Forum PHP
1 réponse
'lut, que le CSV soit "en vrac" est normal: le mail étant une technologie texte, les fichiers (binaires ou non) sont envoyés encodés en base64. Aucun problème donc avec ta pièce jointe sur ce point là.
Autrement ton type MIME n'est pas le bon: c'est le propriétaire Micro$oft que tu as mis, pas le standard
Après il y a peut-être un autre détail qui m'a échappé quant à la syntaxe du mail entier...
from human import idiocy
del idiocy
Autrement ton type MIME n'est pas le bon: c'est le propriétaire Micro$oft que tu as mis, pas le standard
text/csvcomme définit par la RFC4180, ce qui à mon avis explique la non-lecture du fichier par d'autres clients mails que ceux de la firme de Redmond que je hais tant.
Après il y a peut-être un autre détail qui m'a échappé quant à la syntaxe du mail entier...
from human import idiocy
del idiocy
helas le fait d'utiliser text/csv ne change pas le probleme.
Je viens d'essayer phpmailer...ca a l'air de faire papa-maman....mais ca ne marche pas !
au moins, mon envoi en code dur php sans appel de class machin fonctionnait.
ok pour ta remarque sur micro$soft. je viens de faire l'essai vers un email free que j'ouvre avec Zimbra...et bien ca marche ! mon csv est bien en piece jointe....
sur iphone, pas de piece jointe : du charabia dans le texte...
sur gmail, pas de piece jointe : du charabia dans le texte
sur outlook 2010 : le mail est parfait et la piece jointe .csv est bien attachée...
Vers une adresse free avec Zimbra en "client" : le mail est parfait et la piece jointe .csv est bien attachée...
une idée pour reprendre mon formulaire proprement ?
car à force de bricoler...c'est le bazar et je n'ai pas trouvé de tuto propre et clair...