Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Après une longue et laborieuse recherche sans résultat, je me tourne vers mon sauveur habituel, le Z-F Forum
Est-ce que quelqu'un aurait un bout de code (ZF ou non) qui permet de récupérer un fichier attaché à un mail ?
pour envoyer des fichiers attachés on trouve autant de doc qu'on veut, mais dès qu'il s'agit de les récupérer on ne trouve plus personnes
Hors ligne
Je pense que ça doit pouvoir se faire avec la méthode getPart : http://framework.zend.com/manual/fr/zen … d-fetching
Hors ligne
Alors je reviens à la charge avec mon problème de mail.
J'ai déjà résolu une bonne partie, à savoir que je sais récupérer le fichier join à un mail.
Reste plus qu'un seul petit soucis, je n'arrive pas à trouver le nom du fichier joint pour l'enregistrer...
Voici le code que j'ai pour le moment (bête et brutal, tout droit sortis de la doc)
echo $mail->countMessages() . " messages found\n"; $i = 1; foreach ($mail as $message) { echo "{$i} : Mail from '{$message->from}': {$message->subject}\n"; $i++; // dump all headers foreach ($message->getHeaders() as $name => $value) { if (is_string($value)) { echo "$name: $value\n"; continue; } foreach ($value as $entry) { echo "$name: $entry\n"; } } $part = $message; print_r($part); while ($part->isMultipart()) { $part = $message->getPart(2); } echo 'Type of this part is ' . strtok($part->contentType, ';') . "\n"; echo "Content:\n"; print_r($part->getContent()); }
Et voici ce que me renvoie ma fonction:
2 messages found 1 : Mail from 'Test <test@xxxxx.be>': LLU return-path: <test@xxxxx.be> delivered-to: test@0 received: from b0.ovh.net (HELO queue) (x.x.x.x) by b0.ovh.net with SMTP; 25 Nov 2008 09:58:37 -0000 received: from mailrelay008.isp.belgacom.be (x.x.x.x) by mx0.ovh.net with SMTP; 25 Nov 2008 09:58:36 -0000 received: from x.x.x.x.adsl-dyn.isp.belgacom.be (HELO [x.x.x.x]) ([x.x.x.x1]) by relay.skynet.be with ESMTP; 25 Nov 2008 10:58:34 +0100 received-spf: softfail (mx0.ovh.net: transitioning SPF record at mx.ovh.com does not designate x.x.x.x as permitted sender) x-belgacom-dynamic: yes x-ironport-anti-spam-filtered: true x-ironport-anti-spam-result: AgABALtaK0lXQbtR/2dsb2JhbAAI0geCfA message-id: <492BCC4C.9040103@xxxxx.be> date: Tue, 25 Nov 2008 10:58:36 +0100 from: Test <test@xxxxx.be> user-agent: Thunderbird 2.0.0.17 (X11/20080925) mime-version: 1.0 to: test@xxxxx.be subject: LLU content-type: multipart/mixed; boundary="------------030403080508070909060807" x-ovh-tracer-id: 14721141282770516217 x-ovh-remote: 195.238.6.174 (mailrelay008.isp.belgacom.be) x-ovh-local: x.x.x.x (mx0.ovh.net) x-spam-check: DONE|H 0.5/N Type of this part is text/xml Content: <?xml version="1.0"?> <!DOCTYPE OrderElement SYSTEM "BGCIN1.dtd"> <OrderElement> <Order ReferenceNumber="File 1.0" ApplicationDate="20010415131500" CustomerID="OLO customerID"> <OrderAction ReferenceNumber="1a" ActionType="Provide-New" ServiceRequiredDate="20010429120000" PaymentAgreementId="1" OfferName="Raw Copper PTL" > <Remark Type="Commercial" RemarkText=""/> <Remark Type="Technical" RemarkText=""/> <Remark Type="Technical" RemarkText=""/> <EndPointA Street="Patattenstraat" HouseNumber="1" HouseNumberAlpha="" Apartment="A" Floor="3" Block="" MailBoxNumber="" ZipCode="1000" City="Brussel"/> <EndPointB Type="LEX" CoLocationLevelValue ="56KOR0000" OLOMDFID="50000" OLOMDFUpRightID="" OLOMDFPositionID=""/> <EndCustomer DialNumber="" ContactNumber=""/> </OrderAction> </Order> </OrderElement>
Donc ici pas de soucis comme vous pouvez le voir, je récupère le contenu du fichier join (ici un bête xml) mais pas moyen de mettre la main sur son nom
Merci
Hors ligne
je me permet de faire un ptit up!
Ca me coince vraiment dans mon développement, si qqun à une idée, même uste un début de piste je suis preneur
Merci
Hors ligne
bonsoir,
une piste pour vous aiguiller:
une fois que vous avez récupéré votre "part"
vous récupérez le header 'content-type', et vous séparez la chaine au niveau du ';'
$headerContentType = $part->getHeader('content-type'); list($contentType,$name) = explode(";", $headerContentType);
à vous de faire le reste
bon courage
Hors ligne
Pages: 1