Envoi mails PHP : pièce jointe = texte !
Fermé
new morning
Messages postés
127
Date d'inscription
lundi 13 août 2007
Statut
Membre
Dernière intervention
15 mai 2013
-
9 sept. 2008 à 04:01
new morning Messages postés 127 Date d'inscription lundi 13 août 2007 Statut Membre Dernière intervention 15 mai 2013 - 9 sept. 2008 à 14:34
new morning Messages postés 127 Date d'inscription lundi 13 août 2007 Statut Membre Dernière intervention 15 mai 2013 - 9 sept. 2008 à 14:34
A voir également:
- Envoi mails PHP : pièce jointe = texte !
- Easy php - Télécharger - Divers Web & Internet
- Programmer envoi mail gmail - Guide
- Votre envoi est sur le site qui dessert votre adresse. nous préparons sa distribution. ✓ - Forum Consommation & Internet
- Votre envoi est en transit sur nos plateformes logistiques. - Forum Consommation & Internet
- Annuler envoi mail gmail - Guide
6 réponses
SyGEN
Messages postés
62
Date d'inscription
lundi 10 mars 2008
Statut
Membre
Dernière intervention
11 septembre 2008
8
9 sept. 2008 à 07:31
9 sept. 2008 à 07:31
Je te conseille d'utiliser l'excellente libraire Zend (elle a une partie mail) dont la collectivité PHP use et abuse puisqu'elle est de très bonne facture ! Je pense que tu trouveras ton bonheur en lisant la doc dessus.
Un petit lien (anglais) sur quelques tutos pour Zend Mail & Zend Mime : http://www.zftutorials.com/zend-mail-zend-mime/
Amicalement
Un petit lien (anglais) sur quelques tutos pour Zend Mail & Zend Mime : http://www.zftutorials.com/zend-mail-zend-mime/
Amicalement
new morning
Messages postés
127
Date d'inscription
lundi 13 août 2007
Statut
Membre
Dernière intervention
15 mai 2013
19
9 sept. 2008 à 11:57
9 sept. 2008 à 11:57
Merci SyGEN de cette réponse
Je n'ai pas encore essayé cette bibliothèque, mais je crains de retrouver pour la nième fois le résultat décevant d'un mail contentant bien quelque chose qui doit être ma pièce jointe, mais sous forme de Gl2LnRpdGxlLCBkaXYuaGVhZGVyLCBkaX etc., ce qui n'est guère satisfaisant.
As-tu des raisons technique de penser que cette bibliothèque puisse améliorer le shmil-blick ? Car à force de multiplier les essais, je me dis qu'il serait maintenant plus productif d'essayer de comprendre POURQUOI la frontière entre le texte et la pièce jointe n'est pas prise en compte. Et là, google ne m'aide pas beaucoup :(
EDIT : en fait, tout se passe comme si mon en-tête n'étais pas prise en compte :
Je n'ai pas encore essayé cette bibliothèque, mais je crains de retrouver pour la nième fois le résultat décevant d'un mail contentant bien quelque chose qui doit être ma pièce jointe, mais sous forme de Gl2LnRpdGxlLCBkaXYuaGVhZGVyLCBkaX etc., ce qui n'est guère satisfaisant.
As-tu des raisons technique de penser que cette bibliothèque puisse améliorer le shmil-blick ? Car à force de multiplier les essais, je me dis qu'il serait maintenant plus productif d'essayer de comprendre POURQUOI la frontière entre le texte et la pièce jointe n'est pas prise en compte. Et là, google ne m'aide pas beaucoup :(
EDIT : en fait, tout se passe comme si mon en-tête n'étais pas prise en compte :
$boundary='didondinaditondelosdudosdodudundodudindon'; Content-Type: multipart/mixed; boundary=\"$boundary\"\r\n\n";
SyGEN
Messages postés
62
Date d'inscription
lundi 10 mars 2008
Statut
Membre
Dernière intervention
11 septembre 2008
8
9 sept. 2008 à 12:51
9 sept. 2008 à 12:51
Fait voir ton code ou poste le moi en mp si c'est trop long.
new morning
Messages postés
127
Date d'inscription
lundi 13 août 2007
Statut
Membre
Dernière intervention
15 mai 2013
19
9 sept. 2008 à 12:56
9 sept. 2008 à 12:56
J'aurais du préciser que le lien donné en haut était celui du script. le voici ici reproduis (sans les paramétrages persos qui ne sont pas compliqués).
Est-ce que le blocage peut venir d'un paramétrage de MIME par l'hébergeur ? (Gandi AI)
<?php $boundary='didondinaditondelosdudosdodudundodudindon'; //En-têtes du mail $headers="From: expediteur@domaine.fr\r\n MIME-Version: 1.0\r\n Content-Type: multipart/mixed; boundary=\"$boundary\"\r\n\n"; //Corps du mail en commençant par le message principal $body="--". $boundary ."\n Content-Type: text/plain; charset=ISO-8859-1\r\n\n Message principal du mail.\n\n"; /* Piece jointe, on va dire que notre fichier s'appele bidule.doc et qu'il se situe dans le repertoire courant */ $fichier=file_get_contents('./bidule.doc'); /* On utilise aussi chunk_split() qui organisera comme il faut l'encodage fait en base 64 pour se conformer aux standards */ $fichier=chunk_split( base64_encode($fichier) ); //Ecriture de la pièce jointe $body = $body . "--" .$boundary. "\n Content-Type: application/msword; name=\"nom_fichier\"\r\n Content-Transfer-Encoding: base64\r\n Content-Disposition: attachment; filename=\"nom_fichier\"\r\n\n $fichier"; //Fermeture de la frontière $body = $body . "--" . $boundary ."--"; //Envoi du mail mail("destinataire@bidule.fr", "sujet", $body, $headers); ?>
Est-ce que le blocage peut venir d'un paramétrage de MIME par l'hébergeur ? (Gandi AI)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
new morning
Messages postés
127
Date d'inscription
lundi 13 août 2007
Statut
Membre
Dernière intervention
15 mai 2013
19
9 sept. 2008 à 14:34
9 sept. 2008 à 14:34
EXTRA !
Merci beaucoup SyGEN, enfin ! après 5 jours de lutte ! je vais pouvoir reprendre mon script de backup automatique sur Email (tous ceux que j'ai testé merdaient, à moins de réinstaller PEAR et MIME !)
Merci beaucoup SyGEN, enfin ! après 5 jours de lutte ! je vais pouvoir reprendre mon script de backup automatique sur Email (tous ceux que j'ai testé merdaient, à moins de réinstaller PEAR et MIME !)
SyGEN
Messages postés
62
Date d'inscription
lundi 10 mars 2008
Statut
Membre
Dernière intervention
11 septembre 2008
8
9 sept. 2008 à 14:10
9 sept. 2008 à 14:10
Je t'en ai écrit un petit qui marche comme ca tu vois simplement (sans utiliser Zend) :
Amicalement
<?php $mime_boundary = "<<<--==+X[".md5(time())."]"; $headers .= "From: Bidule <destinataire@bidule.fr>\r\n"; $headers .= "To: Bidule <destinataire@bidule.fr>\r\n"; $headers .= "MIME-Version: 1.0\r\n"; $headers .= "Content-Type: multipart/mixed;\r\n"; $headers .= " boundary=\"".$mime_boundary."\""; $message .= "Message principal du mail.\r\n"; $message .= "\r\n"; $message .= "--".$mime_boundary."\r\n"; $message .= "Content-Type: text/plain; charset=\"iso-8859-1\"\r\n"; $message .= "Content-Transfer-Encoding: 7bit\r\n"; $message .= "\r\n"; $message .= "Bonjour \r\n"; $message .= "Voici le fichier demandé! \r\n"; $message .= "--".$mime_boundary."\r\n"; $message .= "Content-Type: application/msword;\r\n"; $message .= " name=\"bidule.doc\"\r\n"; $message .= "Content-Transfer-Encoding: base64\r\n"; $message .= "Content-Disposition: attachment;\r\n"; $message .= " filename=\"bidule.doc\"\r\n"; $message .= "\r\n"; $myfile = file_get_contents("bidule.doc"); $fileContent = chunk_split( base64_encode($myfile) ); $message .= $fileContent; $message .= "\r\n"; $message .= "--".$mime_boundary."\r\n"; $ok = mail("destinataire@bidule.fr", "Fichier word", $message, $headers); if ($ok) echo "Parfait"; else echo "AIEEEEUH"; ?>
Amicalement