apxa
Messages postés188Date d'inscriptionmercredi 15 mai 2002StatutMembreDernière intervention25 avril 2009
-
30 mars 2006 à 22:03
Me0s
Messages postés2Date d'inscriptionmardi 24 août 2010StatutMembreDernière intervention24 août 2010
-
24 août 2010 à 15:00
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
Me0s
Messages postés2Date d'inscriptionmardi 24 août 2010StatutMembreDernière intervention24 août 2010 24 août 2010 à 15:00
J'oubliais, il y a une faute dans ton code à la fin moumoloud :
if(isset($nom_fichier)) if ($nom_fichier!=null) tu as oublié un {
Me0s
Messages postés2Date d'inscriptionmardi 24 août 2010StatutMembreDernière intervention24 août 2010 24 août 2010 à 14:42
Bonjour,
je n'arrive pas à faire fonctionner ce code.
J'ai remarqué avec des echo, qu'il ne rentrait pas dans la boucle property_exists et donc ni dans if (isset($part))
Je pense que le souci vient du $nbrparts = !$struct->parts ? "1" : count($struct->parts); qui vaut toujours 2. Alors que j'ai 4 e-mails dont un qui a une pièce jointe.
Quelqu'un peut--il m'expliquer la ligne $nbrparts = !$struct->parts ? "1" : count($struct->parts); ?
Merci pour votre aide.
moumoloud
Messages postés1Date d'inscriptionmercredi 2 juin 2010StatutMembreDernière intervention28 juin 2010 28 juin 2010 à 12:55
rajout de :
2 property_exists
et de 2 isset,
pour un code qui ne renvoie pas d'erreur
DragonicFlash
Messages postés20Date d'inscriptiondimanche 22 juin 2003StatutMembreDernière intervention31 octobre 2006 19 août 2009 à 14:36
Exactement ce que je cherchais ! =) BRAVO !
NONOKH
Messages postés2Date d'inscriptionlundi 16 février 2009StatutMembreDernière intervention16 février 2009 16 févr. 2009 à 11:56
merci pour tout le monde
je suis vraiment tres fiere pour les aide
j'ai essayer le code ca marche tres bien
je cherche un script qui donne le choix soit de consulter la piece jointe ou la telecharger ici
aider moi svp....!
wam_baloo
Messages postés1Date d'inscriptionvendredi 8 juin 2007StatutMembreDernière intervention 1 juillet 2008 1 juil. 2008 à 09:50
J'ai testé ce script pour mon projet et j'avoue qu'il fonctionne à merveille. Seulement, je ne comprends pas comment récupérer les pièces jointes de chaque mail. En effet, ce script va permettre de scanner l'ensemble des pièces jointes contenues sur le serveur imap, et en extraire les noms de fichiers et les contenus.
Mon but à moi est de sortir les pièces jointes pour chaque mail. Je m'explique. Dans mon exemple, j'ai deux mails qui sont sur mon serveur. Le premier avec une pièce jointe nommée : test1.pdf, le deuxième avec deux pièces jointes nommées : test1.pdf et test2.pdf. Le script me ressort test1.pdf et test2.pdf, le problème est que je voudrais qu'il me sorte quelque chose du genre :
mail1 : test1.pdf
mail2 : test1.pdf, test2.pdf.
Si quelqu'un a une petite idée je suis preneur. Je vais continuer à chercher de mon côté en attendant.
dylan_salmon
Messages postés8Date d'inscriptionvendredi 10 février 2006StatutMembreDernière intervention31 juillet 2006 22 févr. 2008 à 10:47
Pour un fichier dont le $part->encoding est à 4, utilise imap_qprint sur ton retour de imap_fetchbody
> ça convertit une chaîne à guillemets en une chaîne à 8 bits
godgod
Messages postés1Date d'inscriptiondimanche 13 novembre 2005StatutMembreDernière intervention15 octobre 2007 15 oct. 2007 à 08:37
Bonjour,
Votre script marche très bien néanmoins, j'arrive pas à récupérer les fichiers texte (.txt). Apparemment, le $part->encoding est de 4. Si quelqu'un a une solution qu'il m'en fasse part :)
lelapinou_69
Messages postés64Date d'inscriptionmardi 27 janvier 2004StatutMembreDernière intervention10 novembre 2008 13 juin 2007 à 10:49
Salut all.
Je viens minutieusement de lire tous les commentaires de ce script. J'ai récemment récupérer un script qui permet d'envoyer des emails avec des pièces jointes (un fichier pdf en l'occurrence), mais malheureusement lors de l'ouverture de cette dernière, j'ai un beau message d'erreur qui me dit que le fichier est soit corrompu soit envoyé en tant que pièce jointe et mal décodé.
Ai-je besoin de cette source ci pour récupérer cette pièce jointe, et si oui, à quel niveau dois-je l'introduire?
Merci pour vos réponses.
Thierry_ZT
Messages postés6Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention11 janvier 2007 11 janv. 2007 à 15:49
simonlartiste
Messages postés39Date d'inscriptionvendredi 12 novembre 2004StatutMembreDernière intervention28 décembre 2007 11 janv. 2007 à 15:29
Rajoute ça en debut de code :
header("Content-Type: text/html; charset=iso-8859-15");
Thierry_ZT
Messages postés6Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention11 janvier 2007 11 janv. 2007 à 15:25
Super le script,
mais j'ai un pb d'affichage. Il m'affiche:
+ =?iso-8859-1?Q?TR:_D=E9claration_REA_pour_SECM-GT_n=B0_3952?=
au lieu de:
Déclaration REA pour SECM-GT n° 3952
Quelqu'un saurait m'expliquer ce qu'il se passe.
Merci.
raven44
Messages postés315Date d'inscriptionmercredi 23 mars 2005StatutMembreDernière intervention21 mars 20111 5 janv. 2007 à 12:12
Ah jdalton, tu as finalement réussi à récupérer chaque noms de pièces jointes, félicitation !!
C'est vrai que ceci m'a causé des problèmes. enfin bon. C'est bien, ca va aider les autres désormais.
jdalton4
Messages postés2Date d'inscriptionmercredi 21 juillet 2004StatutMembreDernière intervention19 octobre 2006 19 oct. 2006 à 20:00
Ps: j'ai corrigé la merdouille qu'il y avait avec la gestion des noms. Sa roule now!
chaque fichier a son petit nom propre
++ les gens
JD4
jdalton4@gmail.com
jdalton4
Messages postés2Date d'inscriptionmercredi 21 juillet 2004StatutMembreDernière intervention19 octobre 2006 19 oct. 2006 à 19:51
Kikou!
Voici le script modifié par mes soins et fonctionnel (désolé j'ai viré les commentaires du script...), il récupère toutes les pièces jointes d'une messagerie et les stocke dans un dossier (modifier /usr/otiumfra/joint/fichiers/ par l'absolute path du dossier dans lequel vous voulez sauvegarder vos pieces jointes). Have fun!
Ca serait bien que le créateur du script met à jour les deux beugs :
- le ; manquant
- $piece[$h] par $piece
thibotus
Messages postés4Date d'inscriptiondimanche 2 octobre 2005StatutMembreDernière intervention28 mai 2007 1 juin 2006 à 17:38
Moi j'essaye de récupérer simplement une image JPG attaché afin de l'upload dans un dossier défini... :/ mais y arrive pas avec ce code.
simonlartiste
Messages postés39Date d'inscriptionvendredi 12 novembre 2004StatutMembreDernière intervention28 décembre 2007 12 mai 2006 à 12:56
Autant pour moi, tout fonctionne, a+ les developpeux!!
simonlartiste
Messages postés39Date d'inscriptionvendredi 12 novembre 2004StatutMembreDernière intervention28 décembre 2007 12 mai 2006 à 11:56
Merci, je me sens légèrement ridicule mais bon... sinon c est normal que ma piéce jointe extraite soit vide??
Faut il que le mail soit envoyé via la fonction mail de PHP et non via outlook??
d avance merci
Mica34
Messages postés2Date d'inscriptionmercredi 11 juin 2003StatutMembreDernière intervention12 mai 2006 12 mai 2006 à 11:14
Ajoute un ; ligne 47 et ca ira mieux ;)
simonlartiste
Messages postés39Date d'inscriptionvendredi 12 novembre 2004StatutMembreDernière intervention28 décembre 2007 11 mai 2006 à 17:40
Désolé mais j ai toujours une erreur :
"Parse error: syntax error, unexpected T_FOR in C:\wamp\www\test_mail.php on line 50"
Mica34
Messages postés2Date d'inscriptionmercredi 11 juin 2003StatutMembreDernière intervention12 mai 2006 11 mai 2006 à 16:07
Salut à tous.
Je viens de passer un petit moment sur ce script pour des besoins persos. Il y a quelques problèmes. Les pièces sont bien recupérés mais leur taille est nulle. En regardant de plus prés j'ai pu corriger. Juste pour savoir, est ce que cela fonctionne chez vous ?
Pour info j'ai donc modifié cela :
$piece = array();
$piece = imap_fetchbody($mail,$j,$h);
En fait imap_fetchbody ne retourne pas un tableau mais une chaine. L'appel ensuite par $piece[$h] ne marche pas et par conséquent le contenu est vide.
J'ai donc utilisé $piece en tant que variable normale et tout marche sans problème.
Merci pour ce script en tous cas ! Cela m'a permis d'aprrendre beacoup de chose sur les emails et leur composition.
simonlartiste
Messages postés39Date d'inscriptionvendredi 12 novembre 2004StatutMembreDernière intervention28 décembre 2007 5 mai 2006 à 14:35
Slt,
le code est trés interessant cependant l erreur ligne 49 :"Parse error: syntax error, unexpected T_FOR in C:\wamp\www\mail\index.php on line 49 " me bloque, aurais tu la solution, d avance merci
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 31 mars 2006 à 13:50
je peux pas tester, mais bon, c'est bien l'idée y est : ça permet à ceux qui veulent développer une appli webmail de voir un peu comment on peut s'y prendre pour extraire les pièces jointes.
Par contre, tu aurais pu t'appliquer côté code :
- comparaisons typées (plus rapides, et plus exactes)
- NEVER, EVER...ne JAMAIS utilier une fonction dans l'expression d'évaluation d'une boucle for! Ici, fais ton count () en dehors de ta boucle, stocke le résultat dans une variable, et fous la variable dans ton for (). For évalue à chaque itération son expression. Ce qui veut dire que ton tableau, tu le comptes autant de fois que tu boucles avec ton for (), alors que tu pourrais ne le compter qu'une fois.
- ça manque de gestion d'erreurs
raven44
Messages postés315Date d'inscriptionmercredi 23 mars 2005StatutMembreDernière intervention21 mars 20111 31 mars 2006 à 10:01
Salut Apxa, en effet non, pour le moment ce petit bout de code ne permet que de recupérer une seule pièce jointe ! peut etre que si j'ai le temps, je le modifierai afin que l'on puisse en extraire plusieurs !.
Merci de cette remarque.
apxa
Messages postés188Date d'inscriptionmercredi 15 mai 2002StatutMembreDernière intervention25 avril 2009 30 mars 2006 à 22:03
iop,
Ca m'a l'air bien ca mais est ce que ton code gère plusieurs pieces jointes dans un même email ?
24 août 2010 à 15:00
if(isset($nom_fichier)) if ($nom_fichier!=null) tu as oublié un {
24 août 2010 à 14:42
je n'arrive pas à faire fonctionner ce code.
J'ai remarqué avec des echo, qu'il ne rentrait pas dans la boucle property_exists et donc ni dans if (isset($part))
Je pense que le souci vient du $nbrparts = !$struct->parts ? "1" : count($struct->parts); qui vaut toujours 2. Alors que j'ai 4 e-mails dont un qui a une pièce jointe.
Quelqu'un peut--il m'expliquer la ligne $nbrparts = !$struct->parts ? "1" : count($struct->parts); ?
Merci pour votre aide.
28 juin 2010 à 12:55
2 property_exists
et de 2 isset,
pour un code qui ne renvoie pas d'erreur
$nbmess = imap_num_msg($mail);
if ($nbmess == 0)
{
echo "
Aucun message présent sur le serveur
";
}
else
{
for($j =1;$j<=$nbmess;$j++)
{
$header = imap_headerinfo($mail,$j);
$sujet = $header->subject;
echo "+ ".$sujet."
";
$struct = imap_fetchstructure($mail,$j);
if ($struct->type == 1)
{
$nbrparts = !$struct->parts ? "1" : count($struct->parts);
}
$piece = array();
for($h=1;$h<=$nbrparts;$h++)
{
if (property_exists($struct, "parts[1]")){$part = $struct->parts[1] ; }
$piece = imap_fetchbody($mail,$j,$h+1);
if (isset($part)){if (property_exists($part, "encoding")){if ($part->encoding == "3")
{
$nbparam = count($part->parameters);
$i=0;
while ($i < $nbparam)
{
$i++;
$param = $part->parameters[$i];
$nom_fichier = $struct->parts[$h]->dparameters[0]->value;
if($nom_fichier!=null)
{
echo ' /'.$nom_fichier.'
';
}
}
$piece = imap_base64($piece);
}
}}
if(isset($nom_fichier)) if ($nom_fichier!=null)
{
$newfichier = fopen("./files".$nom_fichier,"w+");
fwrite($newfichier,$piece);
fclose($newfichier);
}
}
}
}
19 août 2009 à 14:36
16 févr. 2009 à 11:56
je suis vraiment tres fiere pour les aide
j'ai essayer le code ca marche tres bien
je cherche un script qui donne le choix soit de consulter la piece jointe ou la telecharger ici
aider moi svp....!
1 juil. 2008 à 09:50
Mon but à moi est de sortir les pièces jointes pour chaque mail. Je m'explique. Dans mon exemple, j'ai deux mails qui sont sur mon serveur. Le premier avec une pièce jointe nommée : test1.pdf, le deuxième avec deux pièces jointes nommées : test1.pdf et test2.pdf. Le script me ressort test1.pdf et test2.pdf, le problème est que je voudrais qu'il me sorte quelque chose du genre :
mail1 : test1.pdf
mail2 : test1.pdf, test2.pdf.
Si quelqu'un a une petite idée je suis preneur. Je vais continuer à chercher de mon côté en attendant.
22 févr. 2008 à 10:47
> ça convertit une chaîne à guillemets en une chaîne à 8 bits
15 oct. 2007 à 08:37
Votre script marche très bien néanmoins, j'arrive pas à récupérer les fichiers texte (.txt). Apparemment, le $part->encoding est de 4. Si quelqu'un a une solution qu'il m'en fasse part :)
13 juin 2007 à 10:49
Je viens minutieusement de lire tous les commentaires de ce script. J'ai récemment récupérer un script qui permet d'envoyer des emails avec des pièces jointes (un fichier pdf en l'occurrence), mais malheureusement lors de l'ouverture de cette dernière, j'ai un beau message d'erreur qui me dit que le fichier est soit corrompu soit envoyé en tant que pièce jointe et mal décodé.
Ai-je besoin de cette source ci pour récupérer cette pièce jointe, et si oui, à quel niveau dois-je l'introduire?
Merci pour vos réponses.
11 janv. 2007 à 15:49
Voici mon code complet, si vous pouvez m'aider:
<?php
header("Content-Type: text/html; charset= iso-8859-15");
$mail = imap_open("{msgnotes1:110/pop3}INBOX","neoxis","neoxis07");
$nbmess = imap_num_msg($mail);
if ($nbmess == 0)
{
echo "
Aucun message présent sur le serveur
";
}
else
{
for($j =1;$j<=$nbmess;$j++)
{
$header = imap_headerinfo($mail,$j);
$sujet = $header->subject;
echo "+ ".$sujet."
";
$struct = imap_fetchstructure($mail,$j);
if ($struct->type == 1)
{
$nbrparts = !$struct->parts ? "1" : count($struct->parts);
}
$piece = array();
for($h=1;$h<=$nbrparts;$h++)
{
$part = $struct->parts[1] ;
$piece = imap_fetchbody($mail,$j,$h+1);
if ($part->encoding == "3")
{
$nbparam = count($part->parameters);
$i=0;
while ($i < $nbparam)
{
$i++;
$param = $part->parameters[$i];
$nom_fichier = $struct->parts[$h]->dparameters[0]->value;
if($nom_fichier!=null)
{
echo ' /'.$nom_fichier.'
';
}
}
$piece = imap_base64($piece);
}
if($nom_fichier!=null)
{
$newfichier = fopen("Fichiers/".$nom_fichier,"w+");
fwrite($newfichier,$piece);
fclose($newfichier);
}
}
}
}
?>
Merci à l'avance.
11 janv. 2007 à 15:43
11 janv. 2007 à 15:41
11 janv. 2007 à 15:37
+ = ?iso-8859-1?Q?TR:_D=E9claration_REA_pour_SECM-GT_n=B0_3952?=
+ =?iso-8859-1?Q?TR:_D=E9claration_REA_n=B0_3956_et_3957?=
/AJP Lettre de Confirmation 0701GBU1578646 - 3AI.pdf
+ TR: test mail
Extrait du code:
<?php
header("Content-Type: text/html; charset=iso-8859-15");
$mail = imap_open("{msgnotes1:110/pop3}INBOX","neoxis","neoxis07");
$nbmess = imap_num_msg($mail);
if ($nbmess == 0)
{
echo "
Aucun message présent sur le serveur
";
}
else
{
for($j =1;$j<=$nbmess;$j++)
{
$header = imap_headerinfo($mail,$j);
$sujet = $header->subject;
echo "+ ".$sujet."
";
$struct = imap_fetchstructure($mail,$j);
.
.
.
je l'ai placé au mauvais endroit?
11 janv. 2007 à 15:29
header("Content-Type: text/html; charset=iso-8859-15");
11 janv. 2007 à 15:25
mais j'ai un pb d'affichage. Il m'affiche:
+ =?iso-8859-1?Q?TR:_D=E9claration_REA_pour_SECM-GT_n=B0_3952?=
au lieu de:
Déclaration REA pour SECM-GT n° 3952
Quelqu'un saurait m'expliquer ce qu'il se passe.
Merci.
5 janv. 2007 à 12:12
C'est vrai que ceci m'a causé des problèmes. enfin bon. C'est bien, ca va aider les autres désormais.
19 oct. 2006 à 20:00
chaque fichier a son petit nom propre
++ les gens
JD4
jdalton4@gmail.com
19 oct. 2006 à 19:51
Voici le script modifié par mes soins et fonctionnel (désolé j'ai viré les commentaires du script...), il récupère toutes les pièces jointes d'une messagerie et les stocke dans un dossier (modifier /usr/otiumfra/joint/fichiers/ par l'absolute path du dossier dans lequel vous voulez sauvegarder vos pieces jointes). Have fun!
JD4
<?
$mail = imap_open("{localhost:110/pop3}INBOX","adresse@domaine.com","motdepasse");
$nbmess = imap_num_msg($mail);
if ($nbmess == 0)
{
echo "
Aucun message présent sur le serveur
";
}
else
{
for($j =1;$j<=$nbmess;$j++)
{
$header = imap_headerinfo($mail,$j);
$sujet = $header->subject;
echo "+ ".$sujet."
";
$struct = imap_fetchstructure($mail,$j);
if ($struct->type == 1)
{
$nbrparts = !$struct->parts ? "1" : count($struct->parts);
}
$piece = array();
for($h=1;$h<=$nbrparts;$h++)
{
$part = $struct->parts[1] ;
$piece = imap_fetchbody($mail,$j,$h+1);
if ($part->encoding == "3")
{
$nbparam = count($part->parameters);
$i=0;
while ($i < $nbparam)
{
$i++;
$param = $part->parameters[$i];
$nom_fichier = $struct->parts[$h]->dparameters[0]->value;
if($nom_fichier!=null)
{
echo ' /'.$nom_fichier.'
';
}
}
$piece = imap_base64($piece);
}
if($nom_fichier!=null)
{
$newfichier = fopen("/usr/otiumfra/joint/fichiers/".$nom_fichier,"w+");
fwrite($newfichier,$piece);
fclose($newfichier);
}
}
}
}
?>
2 juin 2006 à 12:21
Ensuite, il ne récupère pas le nom de la pièce jointe chez moi, alors en faisantune connection POP3 ca fonctionne. {pop.domaine.com:110/pop3}INBOX
Et pour supprimer les messages :
imap_delete($mail, $i);
imap_expunge($mail);
imap_close($mail);
Ca serait bien que le créateur du script met à jour les deux beugs :
- le ; manquant
- $piece[$h] par $piece
1 juin 2006 à 17:38
12 mai 2006 à 12:56
12 mai 2006 à 11:56
Faut il que le mail soit envoyé via la fonction mail de PHP et non via outlook??
d avance merci
12 mai 2006 à 11:14
11 mai 2006 à 17:40
"Parse error: syntax error, unexpected T_FOR in C:\wamp\www\test_mail.php on line 50"
11 mai 2006 à 16:07
Je viens de passer un petit moment sur ce script pour des besoins persos. Il y a quelques problèmes. Les pièces sont bien recupérés mais leur taille est nulle. En regardant de plus prés j'ai pu corriger. Juste pour savoir, est ce que cela fonctionne chez vous ?
Pour info j'ai donc modifié cela :
$piece = array();
$piece = imap_fetchbody($mail,$j,$h);
En fait imap_fetchbody ne retourne pas un tableau mais une chaine. L'appel ensuite par $piece[$h] ne marche pas et par conséquent le contenu est vide.
J'ai donc utilisé $piece en tant que variable normale et tout marche sans problème.
Merci pour ce script en tous cas ! Cela m'a permis d'aprrendre beacoup de chose sur les emails et leur composition.
5 mai 2006 à 14:35
le code est trés interessant cependant l erreur ligne 49 :"Parse error: syntax error, unexpected T_FOR in C:\wamp\www\mail\index.php on line 49 " me bloque, aurais tu la solution, d avance merci
31 mars 2006 à 13:50
Par contre, tu aurais pu t'appliquer côté code :
- comparaisons typées (plus rapides, et plus exactes)
- NEVER, EVER...ne JAMAIS utilier une fonction dans l'expression d'évaluation d'une boucle for! Ici, fais ton count () en dehors de ta boucle, stocke le résultat dans une variable, et fous la variable dans ton for (). For évalue à chaque itération son expression. Ce qui veut dire que ton tableau, tu le comptes autant de fois que tu boucles avec ton for (), alors que tu pourrais ne le compter qu'une fois.
- ça manque de gestion d'erreurs
31 mars 2006 à 10:01
Merci de cette remarque.
30 mars 2006 à 22:03
Ca m'a l'air bien ca mais est ce que ton code gère plusieurs pieces jointes dans un même email ?
Have Fun ;)