Likes Likes:  0
Resultaten 1 tot 4 van de 4
Geen
  1. #1
    JAKE
    Opslaan PDF attachment met PHP
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    Opslaan PDF attachment met PHP

    Hallo,

    Ik wil met een PHP script een mailbox controleren en de attachments
    automatisch laten opslaan in een directory zodat deze beschikbaar zijn
    voor de gebruikers (een soort archief).

    Het lukt goed met .doc bestanden (met imap_base64) doch de .pdf files
    geven een encoded error. Iemand die raad weet ?

    Dit is mijn php code:
    --------------------

    $login = 'mailboxlogin';

    $password = 'mailboxpass';

    $mbox = imap_open("{127.0.0.1:110/pop3/notls}INBOX", "$login", "$password")
    or die("Could not open Mailbox - try again later!");

    $hdr = imap_check($mbox);

    $msgCount = $hdr->Nmsgs;

    $overview=imap_fetch_overview($mbox,"1:$msgCount", 0);

    $size=sizeof($overview);

    for($i=$size-1;$i>=0;$i--)

    {

    $val=$overview[$i];

    $msg=$val->msgno;

    $date=$val->date;

    $subj=$val->subject;

    $struct = imap_fetchstructure($mbox,$msg);

    $contentParts = count($struct->parts);

    if ($contentParts >= 2) {

    for ($ix=2;$ix<=$contentParts;$ix++) {

    $att[$ix-2] = imap_bodystruct($mbox,$msg,$ix);

    }

    for ($k=0;$k<sizeof($att);$k++) {

    if ($att[$k]->parameters[0]->value == "us-ascii" ||
    $att[$k]->parameters[0]->value == "US-ASCII") {

    if ($att[$k]->parameters[1]->value != "") {

    $FileName[$k] = $att[$k]->parameters[1]->value;

    $FileType[$k] = strrev(substr(strrev($FileName[$k]),0,4));

    }

    } elseif ($att[$k]->parameters[0]->value != "iso-8859-1" &&
    $att[$k]->parameters[0]->value != "ISO-8859-1") {

    $FileName[$k] = $att[$k]->parameters[0]->value;

    $FileType[$k] = strrev(substr(strrev($FileName[$k]),0,4));

    $fileContent = imap_fetchbody($mbox,$msg,$file+2);

    $fileContent = imap_base64($fileContent);

    $localfile = fopen("/var/www/bestanden/$FileName[$k]","w");

    fputs($localfile,$fileContent);

    fclose($localfile);

    }

    }

    }

    }

    imap_close($mbox);



  2. #2
    google@phaedro.com
    Opslaan PDF attachment met PHP
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    Re: Opslaan PDF attachment met PHP

    Dag JAKE,

    JAKE schreef:
    > Hallo,
    >
    > Ik wil met een PHP script een mailbox controleren en de attachments
    > automatisch laten opslaan in een directory zodat deze beschikbaar zijn
    > voor de gebruikers (een soort archief).
    >


    Je draait dit script met een cronjob oid of wordt het aangeroepen via
    een webpagina b.v. webmail ?

    Dit is echt niet iets wat ik met PHP zou aanpakken: www.python.org is
    daar meer geschikt voor.



    > Het lukt goed met .doc bestanden (met imap_base64) doch de .pdf files
    > geven een encoded error. Iemand die raad weet ?
    >


    Je code, vluchtig, bekijkend zie ik wel twee gekke dingen:
    1. Je gaat ervan uit dat de character-set of US-ASCII of ISO-nogwat is:
    dit lijkt mij een verkeerde aanname , er is b.v. UTF-8 en een weelderig
    aantal andere char-sets . Je doet hier iets fout, en bovendien iets dat
    imap_ of een andere library voor je zou moeten doen.

    2.
    > $FileName[$k] = $att[$k]->parameters[0]->value;

    ....
    > $localfile = fopen("/var/www/bestanden/$FileName[$k]","w");


    is $att[k]->parameters[0]->value de fileName zoals in MIME headers? Wat
    gebeurt er bij een tweede attachment met toevallig dezelfde fileName ?


    verder:
    - commentaar ?
    - opdelen in functies (b.v. 'getMessages', 'getAttachmentsFromMessage'
    : maakt het veel makkelijker leesbaar en te debuggen)

    bovendien:
    >

    A > $FileType[$k] = strrev(substr(strrev($FileName[$k]),0,4));
    B > $fileContent = imap_fetchbody($mbox,$msg,$file+2);
    C > $fileContent = imap_base64($fileContent);

    Welk van deze drie statements genereert de error ? Kan je dat eens
    uitzoeken?

    --
    Thijs Cobben
    www.phaedro.com

    > Dit is mijn php code:
    > --------------------
    >
    > $login = 'mailboxlogin';
    >
    > $password = 'mailboxpass';
    >
    > $mbox = imap_open("{127.0.0.1:110/pop3/notls}INBOX", "$login", "$password")
    > or die("Could not open Mailbox - try again later!");
    >
    > $hdr = imap_check($mbox);
    >
    > $msgCount = $hdr->Nmsgs;
    >
    > $overview=imap_fetch_overview($mbox,"1:$msgCount", 0);
    >
    > $size=sizeof($overview);
    >
    > for($i=$size-1;$i>=0;$i--)
    >
    > {
    >
    > $val=$overview[$i];
    >
    > $msg=$val->msgno;
    >
    > $date=$val->date;
    >
    > $subj=$val->subject;
    >
    > $struct = imap_fetchstructure($mbox,$msg);
    >
    > $contentParts = count($struct->parts);
    >
    > if ($contentParts >= 2) {
    >
    > for ($ix=2;$ix<=$contentParts;$ix++) {
    >
    > $att[$ix-2] = imap_bodystruct($mbox,$msg,$ix);
    >
    > }
    >
    > for ($k=0;$k<sizeof($att);$k++) {
    >
    > if ($att[$k]->parameters[0]->value == "us-ascii" ||
    > $att[$k]->parameters[0]->value == "US-ASCII") {
    >
    > if ($att[$k]->parameters[1]->value != "") {
    >
    > $FileName[$k] = $att[$k]->parameters[1]->value;
    >
    > $FileType[$k] = strrev(substr(strrev($FileName[$k]),0,4));
    >
    > }
    >
    > } elseif ($att[$k]->parameters[0]->value != "iso-8859-1" &&
    > $att[$k]->parameters[0]->value != "ISO-8859-1") {
    >
    > $FileName[$k] = $att[$k]->parameters[0]->value;
    >
    > $FileType[$k] = strrev(substr(strrev($FileName[$k]),0,4));
    >
    > $fileContent = imap_fetchbody($mbox,$msg,$file+2);
    >
    > $fileContent = imap_base64($fileContent);
    >
    > $localfile = fopen("/var/www/bestanden/$FileName[$k]","w");
    >
    > fputs($localfile,$fileContent);
    >
    > fclose($localfile);
    >
    > }
    >
    > }
    >
    > }
    >
    > }
    >
    > imap_close($mbox);



  3. #3
    JAKE
    Opslaan PDF attachment met PHP
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    Re: Opslaan PDF attachment met PHP

    Hallo Thijs,

    Bedankt voor je reactie.

    Ik werk meestal wel met functies voor grotere scripts.
    De comment lines // heb ik niet mee gepost in de nieuwsgroep maar gebruik ik
    wel. (zijn tijdens de programmatiefase niet geschikt voor publicatie).

    De mails zijn interne mails (rapporten) verzonden door een Administratie
    pakket op een NT server die ofwel een .doc bestand bevatten of een .pdf.
    Een bestandnaam kan maar 1 keer voorkomen en de character-set is steeds
    dezelfde.

    Op een interne Mail + web server (linux) wil ik een cron file maken voor een
    script welke de attachments automatisch plaatst in een map welke beschikbaar
    is als archief.

    Mijn scripts werkt en plaatst alle bijlagen in de juiste map. De .doc
    bestanden kan men al raadplegen doch de .pdf files geven nog een encoding
    error.

    Ik heb geen ervaring met python, dat lijkt me dus ook niet de oplossing.

    Met vriendelijke groeten,
    JAKE


    <google@phaedro.com> schreef in bericht
    news:1122398940.583345.32220@o13g2000cwo.googlegro ups.com...
    > Dag JAKE,
    >
    > JAKE schreef:
    >> Hallo,
    >>
    >> Ik wil met een PHP script een mailbox controleren en de attachments
    >> automatisch laten opslaan in een directory zodat deze beschikbaar zijn
    >> voor de gebruikers (een soort archief).
    >>

    >
    > Je draait dit script met een cronjob oid of wordt het aangeroepen via
    > een webpagina b.v. webmail ?
    >
    > Dit is echt niet iets wat ik met PHP zou aanpakken: www.python.org is
    > daar meer geschikt voor.
    >
    >
    >
    >> Het lukt goed met .doc bestanden (met imap_base64) doch de .pdf files
    >> geven een encoded error. Iemand die raad weet ?
    >>

    >
    > Je code, vluchtig, bekijkend zie ik wel twee gekke dingen:
    > 1. Je gaat ervan uit dat de character-set of US-ASCII of ISO-nogwat is:
    > dit lijkt mij een verkeerde aanname , er is b.v. UTF-8 en een weelderig
    > aantal andere char-sets . Je doet hier iets fout, en bovendien iets dat
    > imap_ of een andere library voor je zou moeten doen.
    >
    > 2.
    >> $FileName[$k] = $att[$k]->parameters[0]->value;

    > ...
    >> $localfile = fopen("/var/www/bestanden/$FileName[$k]","w");

    >
    > is $att[k]->parameters[0]->value de fileName zoals in MIME headers? Wat
    > gebeurt er bij een tweede attachment met toevallig dezelfde fileName ?
    >
    >
    > verder:
    > - commentaar ?
    > - opdelen in functies (b.v. 'getMessages', 'getAttachmentsFromMessage'
    > : maakt het veel makkelijker leesbaar en te debuggen)
    >
    > bovendien:
    >>

    > A > $FileType[$k] = strrev(substr(strrev($FileName[$k]),0,4));
    > B > $fileContent = imap_fetchbody($mbox,$msg,$file+2);
    > C > $fileContent = imap_base64($fileContent);
    >
    > Welk van deze drie statements genereert de error ? Kan je dat eens
    > uitzoeken?
    >
    > --
    > Thijs Cobben
    > www.phaedro.com
    >
    >> Dit is mijn php code:
    >> --------------------
    >>
    >> $login = 'mailboxlogin';
    >>
    >> $password = 'mailboxpass';
    >>
    >> $mbox = imap_open("{127.0.0.1:110/pop3/notls}INBOX", "$login",
    >> "$password")
    >> or die("Could not open Mailbox - try again later!");
    >>
    >> $hdr = imap_check($mbox);
    >>
    >> $msgCount = $hdr->Nmsgs;
    >>
    >> $overview=imap_fetch_overview($mbox,"1:$msgCount", 0);
    >>
    >> $size=sizeof($overview);
    >>
    >> for($i=$size-1;$i>=0;$i--)
    >>
    >> {
    >>
    >> $val=$overview[$i];
    >>
    >> $msg=$val->msgno;
    >>
    >> $date=$val->date;
    >>
    >> $subj=$val->subject;
    >>
    >> $struct = imap_fetchstructure($mbox,$msg);
    >>
    >> $contentParts = count($struct->parts);
    >>
    >> if ($contentParts >= 2) {
    >>
    >> for ($ix=2;$ix<=$contentParts;$ix++) {
    >>
    >> $att[$ix-2] = imap_bodystruct($mbox,$msg,$ix);
    >>
    >> }
    >>
    >> for ($k=0;$k<sizeof($att);$k++) {
    >>
    >> if ($att[$k]->parameters[0]->value == "us-ascii" ||
    >> $att[$k]->parameters[0]->value == "US-ASCII") {
    >>
    >> if ($att[$k]->parameters[1]->value != "") {
    >>
    >> $FileName[$k] = $att[$k]->parameters[1]->value;
    >>
    >> $FileType[$k] = strrev(substr(strrev($FileName[$k]),0,4));
    >>
    >> }
    >>
    >> } elseif ($att[$k]->parameters[0]->value != "iso-8859-1" &&
    >> $att[$k]->parameters[0]->value != "ISO-8859-1") {
    >>
    >> $FileName[$k] = $att[$k]->parameters[0]->value;
    >>
    >> $FileType[$k] = strrev(substr(strrev($FileName[$k]),0,4));
    >>
    >> $fileContent = imap_fetchbody($mbox,$msg,$file+2);
    >>
    >> $fileContent = imap_base64($fileContent);
    >>
    >> $localfile = fopen("/var/www/bestanden/$FileName[$k]","w");
    >>
    >> fputs($localfile,$fileContent);
    >>
    >> fclose($localfile);
    >>
    >> }
    >>
    >> }
    >>
    >> }
    >>
    >> }
    >>
    >> imap_close($mbox);

    >




  4. #4
    google@phaedro.com
    Opslaan PDF attachment met PHP
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    Re: Opslaan PDF attachment met PHP


    JAKE schreef:

    > Mijn scripts werkt en plaatst alle bijlagen in de juiste map. De .doc
    > bestanden kan men al raadplegen doch de .pdf files geven nog een encoding
    > error.
    >


    Blijft staan:
    > > A > $FileType[$k] = strrev(substr(strrev($FileName[$k]),0,4));
    > > B > $fileContent = imap_fetchbody($mbox,$msg,$file+2);
    > > C > $fileContent = imap_base64($fileContent);
    > >
    > > Welk van deze drie statements genereert de error ? Kan je dat eens
    > > uitzoeken?


    Haal alle code na het 'kandidaat statement' weg en run je script, zo
    kan je 'debuggen' welke regel de fout maakt.

    Heb je meer info over de error? Op basis van 'encoding' zou ik zeggen
    'C' genereert de error, maar dat kan omdat B de fileContent niet goed
    leest.

    > Ik heb geen ervaring met python, dat lijkt me dus ook niet de oplossing.
    >


    Op lange termijn bespaart het je veel tijd, en de inleerdrempel is echt
    niet hoog... Type maar eens 'python' op een linux masjien , er
    verschijnt een prompt, type 'print "Hello, world"

    --
    T.
    www.phaedro.com
    "posten in niw.ss is een inefficiente manier om site references te
    genereren."


Webhostingtalk.nl

Contact

  • Rokin 113-115
  • 1012 KP, Amsterdam
  • Nederland
  • Contact
© Copyright 2001-2026 Webhostingtalk.nl.
Web Statistics