Toon posts:

[PHP] Mime attachment fetch probleem

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Beste hulptroepen,

Ik ben nou al drie avonden aan het klooien met een script waar ik maar niet verder mee kom.

Wat doet het script:
Er komt een e-mail binnen, word doorgestuurd naar een php script. Dit komt aan in mijn script en ik gebruik PEAR Mail_Mime decode om de e-mail uit elkaar te trekken. Ik doe daarna wat checks (hoe groot is de attachment, is het een gif/jpg, etc.). Als alles goed is insert ik wat in de dbase en schrijf ik het plaatje weg als id.extentie.

En bij dat laatste gaat het volgens mij fout. Hij schrijft wel wat weg, maar dat is dan niet leesbaar als ik het plaatje open.

Ik weet dat de mail goed aankomt. Ik mail de input naar mij zelf en ik heb ook een aantal keren de $structure array naar mij zelf gemailed (die ik overigens wel met addslashes() moest mailen anders lukte het niet). De $structure heeft dan ook een body tag met daarin de data van de attachment (maar dus wel met slashes dan i.v.m. de addslashes).

Weten jullie raad? Heb uiteraard gezocht maar niet iets voor dit probleem gevonden.

Handig om te weten misschien: als ik de gemailed $input (dus de e-mail die gepost word) met de hand in de $input zit en dan het script draai doet hij het wel!


De code:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
$input = file_get_contents("php://stdin");

$params['decode_bodies'] = true;
$params['decode_headers'] = true;
$params['include_bodies'] = true;
$decoder = new Mail_mimeDecode($input);
$structure = $decoder->decode($params);

$foruminfo=split(":",trim($structure->parts[0]->body));
$forumusername=trim($foruminfo[0]);
$forumpassword=trim($foruminfo[1]);
    
$Query="SELECT userid FROM user WHERE username='".$forumusername."' AND password='".md5($forumpassword)."'";
$result=$dbase->querySelect($Query);

if (mysql_num_rows($result)>0)
{
    $row=mysql_fetch_object($result);
    $forumid=$row->userid;
    
    $filetype=explode(".",$structure->parts[1]->d_parameters['filename']);
    $filetype=$filetype[1];
    
    if ((strtolower(trim($filetype))=="gif" || 
strtolower(trim($filetype))=="jpg" || 
strtolower(trim($filetype))=="jpeg") 
&& strlen($structure->parts[1]->body)<=50000)
    {

            $timestamp=time();
            $omschrijving=addslashes(trim($structure->headers['subject']));
            $emailfrom=trim($structure->headers['from']);
            
            $Query = "INSERT INTO fotoblog (forum_id,grootte,filetype,plaatje,naam,timestamp,omschrijving,email) ";
            $Query.= "VALUES('".$forumid."','".$filetype."','".$timestamp."','".$omschrijving."','".$emailfrom."')";

            $pictureid=$dbase->queryInsert($Query);
            
            $fp = fopen($pictureid.".".$filetype, 'w');
            fwrite($fp, $structure->parts[1]->body);
            fclose($fp);
    }
}

[ Voor 25% gewijzigd door Verwijderd op 22-02-2004 12:15 ]