[PHP] Bijvoegen mailfunctie in bestaand script *

Pagina: 1
Acties:
  • 274 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik wil graag het volgende bouwen:

Ik stuur met mijn telefoon(T610) een MMSje naar mijn server.
Daar draait een scriptje (MMSDiary - send.php) en dit scriptje
vangt het MMS op, saved de foto lokaal en stuurt een email met
alles erop en eraan naar ik@moblog.nl. Mooi dit werkt, de source
vindt je als je op send.php klikt.

Nu heb ik een aanpassing gemaakt om er ook direct een posting van
te maken in Pivot. Alles mooi, de posting wordt gemaakt maar nu krijg
ik steeds op mijn telefoon de melding: Berichtformaat incorrect
En dat terwijl ik er alleen maar een functie aan toevoeg en niet
echt veel verander aan de werking van het script(send.php. NU heb ik ook
de mailfunctie van het bovenstaande script er bij gezet maar nu verstuurt
ie wel emails maar deze hebben geen attachement, of beter gezegd deze hebben
ze wel maar dan is de attachement niet daadwerkelijk mee verzonden.

Enige grote verschil is:

Origineel:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$parts = $md->parts;
    for ( $i = 0; $i < sizeof( $parts ); $i++ )
    {
        $p = $parts[$i];
        $ext = getExtension( $p->contentType );
        $filename = $dir_name . "/part_" . $i . $ext;
        if ($ext == ".jpg") {
            $fattach = "part_". $i . $ext;
        }
        if ($ext == ".txt") {
            $textfile = "part_". $i . $ext;
        }

        $p->writeToFile( $filename ); 
        apply_hooks( contentTypeToString($p->contentType), $filename );
    }


Aangepast:
PHP:
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
44
45
46
47
48
49
50
$parts = $md->parts;
    
    
    for ( $i = 0; $i < sizeof( $parts ); $i++ )
    {
        $p = $parts[$i];
        $ext = FindExtension( $p->contentType );
        
    //From here on we will perform some Pivot actions..
    
        if  ( ($ext==".txt")) {
            //We will put the text in a temporary file, after which we read it's contents...
            $txt_tmp = "tmp.dat";
            $p->writeToFile($txt_tmp); 
            $handle = fopen ($txt_tmp, "rb");
            $entry['introduction'] .= "<br>".fread ($handle, filesize ($txt_tmp));


        }       
    
    //Now, let's copy the image to the right directory
        if  ( ($ext==".jpg") || ($ext==".jpeg") ||  ($ext==".gif") ||  ($ext==".png") ) {
            
            $filename = "../images/".$cur_time . $ext;
            $fattach = "part_". $i . $ext;
            
            $p->writeToFile($filename);
            list ($mywidth, $myheight) = getimagesize($filename);

            echo "size: $mywidth, $myheight<br>";

            if ( ($mywidth > $maxwidth) || ($myheight > $maxheight)) {

                include_once "modules/module_imagefunctions.php";

                $thumbfile = resize_image($filename, $maxwidth, $maxheight);
                echo $filename;
                if (strlen($thumbfile)>2) {
                    $entry['introduction'] .="<br>[[popup:$filename:(thumbnail)::center:1]]";
                } else {
                    $entry['introduction'] .="<br>[[popup:$filename:$filename::center:1]]";
                }

            } else {

                $entry['introduction'] .= "<br>[[image:$filename]]";

            }
            
        }



heb al eens over de site van Pivot gesurfd en al daar op het forum geweest. Tevens ook op het forum van Moblog.nl en op de site van MMSDiary. Ook gesproken met de bouwer van de pivot module voor MMSdiary maar deze weet het ook niet. Dus nu mijn laatst hoop. Misschien dat iemand de oplossing weet.

Kort samengevat:
originele source van MMSDiary
aangepaste source voor Pivot

Idee: Stuur SMS naar script op server, server slaat MMS lokaal op en biedt hem aan pivot en stuurt hem als mail door naar ik@moblog.nl

[ Voor 35% gewijzigd door Verwijderd op 25-10-2003 02:06 . Reden: Even verschillen met code aangegeven ]


Acties:
  • 0 Henk 'm!

  • marty
  • Registratie: Augustus 2002
  • Laatst online: 27-03-2023
Verwijderd schreef op 25 October 2003 @ 02:03:
NU heb ik ook de mailfunctie van het bovenstaande script er bij gezet maar nu verstuurt ie wel emails maar deze hebben geen attachement, of beter gezegd deze hebben ze wel maar dan is de attachement niet daadwerkelijk mee verzonden.
Dat vat ik niet helemaal. Zit er nou helemaal niets aan, is de attachment leeg, is de attachment niet leeg, maar zie je gewoon de source in je email ... wat gebeurt er precíes?

waarom heb je deze regel er trouwens tussen staan:
PHP:
1
$attachment = preg_replace("/\n/i", "\n", $attachment);

het lijkt me dat die nogal weinig doet

(zeker /\r/i voor /\n/i vervangen??)

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik zie in principe als ik op de attachement klik dat ie gaat zoeken in mijn documenten op de lokale computer, fout dus!

Die preg_replace is nodig voor de mailservers die daar wel eens over vallen!

Acties:
  • 0 Henk 'm!

  • marty
  • Registratie: Augustus 2002
  • Laatst online: 27-03-2023
Verwijderd schreef op 26 oktober 2003 @ 05:21:
Ik zie in principe als ik op de attachement klik dat ie gaat zoeken in mijn documenten op de lokale computer, fout dus!
Daar wordt ik nog niet veel wijzer van. Vertel nou eens precies hoe die mail aankomt. Het lijkt me handig als je voor jezelf achterhaalt hoe de source van je email er uit ziet zodat je weet wát er verstuurd wordt. Pas dan kun je gaan tracen waar het fout gaat in het samenstellen van die source
Die preg_replace is nodig voor de mailservers die daar wel eens over vallen!
maar je replaced nix. ja, je replaced een \n voor een \n :?

Acties:
  • 0 Henk 'm!

  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 28-02 22:17
hij replaced \n of \N door \n.

Ik gok dat et daarvoor bedoelt is. Alhoewel ik niet snap hoe je een \N zou gebruiken ipv een \n in the first place.

Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
marty schreef op 26 October 2003 @ 16:39:
Daar wordt ik nog niet veel wijzer van. Vertel nou eens precies hoe die mail aankomt. Het lijkt me handig als je voor jezelf achterhaalt hoe de source van je email er uit ziet zodat je weet wát er verstuurd wordt. Pas dan kun je gaan tracen waar het fout gaat in het samenstellen van die source
Ik krijg dan dus een mailtje binnen.
Subject klopt, de body ook en er zit een attachement bij.
Maar het lijkt net alsof die attachement meer een link is naar het bestand.
Alleen is dan het path niet kloppende en gaat ie het zoeken in de mijn documenten van de lokale computer.

Er zit dus wel een attachement bij maar deze is dus niet werkende.

Acties:
  • 0 Henk 'm!

  • marty
  • Registratie: Augustus 2002
  • Laatst online: 27-03-2023
kun je via het script een zorgen dat het mailtje bij mij terecht komt, misschien dat dat wat verheldert. stuur maar naar marty at excudo dot net

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Marty heb je een mailtje gestuurd....

Acties:
  • 0 Henk 'm!

  • marty
  • Registratie: Augustus 2002
  • Laatst online: 27-03-2023
hebbum ontvangen.

dit is de attachment zoals ie aan het meeltje hangt:
--------------020009080901000304020609
Content-Type: application/octet-stream;
name="part_0.jpg"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
filename="part_0.jpg"


--------------020009080901000304020609--
zoals je ziet is ie helemaal leeg. De inhoud van je bestand komt er dus niet aan te hangen.

als ik dan naar je code kijk:
PHP:
1
2
3
4
    $filehandle2 = fopen("$dir_name/$fattach", "rb");
    $attachment = fread($filehandle2, filesize ("$dir_name/$fattach"));
    fclose ($filehandle2);
    $attachment = chunk_split(base64_encode($attachment));

dan zie ik dat je nergens een controle heb ingebouwd of die file uberhaupt wel bestaat.

PHP:
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
$att_file = $dir_name."/".$fattach;
if (file_exists($att_file))
{
     // btw, je weet zeker dat het _altijd_ binaire bestanden zijn?
    $filehandle2 = fopen($att_file, "rb");
    if ($attachment = fread($filehandle2, filesize ($att_file)))
    {
        $attachment = chunk_split(base64_encode($attachment));
    }
    fclose ($filehandle2);
}
else
{
     // hier kun je iets inbouwen wat je waarschuwt dat het bestand niet bestaat
}

 // some smtp servers (routers) don't like (\r) in base64 strings so remove them
 // It will not effect servers that do allow them
if (isset($attachment))
{
    $attachment = preg_replace("/\n/i", "\n", $attachment);
     // variabelen liever niet quoten ($ahead .= "$attachment";)
    $ahead .= $attachment;
    $ahead .= "\n";
}
$msgbody .= $ahead;

[ Voor 17% gewijzigd door marty op 29-10-2003 19:31 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Mm thx dat je al heen hebt gekeken,
maar uhm die snippet wat je me hier boven geeft, kan ik die gewoon in mijn script
erbij plakken? Want als ik dat doe krijg ik de foto wel gewoon op de site te zien maar
niet in mijn mailbox dan krijg ik weer een lege attachement met de juiste file name.

Maar dat incorrect bericht formaat kan dat liggen aan het feit dat het scriptje te lang moet executen?? Ik voeg namelijk eigenlijk een ander schrijf module toe die het fototje ergens anders neer dumpt. Het oude scriptje deed dat ook al allleen niet op een manier zodat ie goed door pivot werd gelezen

Acties:
  • 0 Henk 'm!

  • marty
  • Registratie: Augustus 2002
  • Laatst online: 27-03-2023
Verwijderd schreef op 29 oktober 2003 @ 23:48:
Mm thx dat je al heen hebt gekeken,
maar uhm die snippet wat je me hier boven geeft, kan ik die gewoon in mijn script
erbij plakken?
nee er moet wel iets vervangen worden en je moet zelf die foutafhandeling nog ff inbouwen. Maargoed, dat heb ik nu maar ff voor je gedaan.
Vervang dit gedeelte:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
$ahead = "--".$abound."";
$ahead .= "\n";
$ahead .= "Content-Type: application/octet-stream";
$ahead .= "\n";
$ahead .= "Content-Transfer-Encoding: base64";
$ahead .= "\n";
$ahead .= "Content-Disposition: attachment; filename=\"$fattach\"";
$ahead .= "\n\n";
set_magic_quotes_runtime(0);

$filehandle2 = fopen("$dir_name/$fattach", "rb");
$attachment = fread($filehandle2, filesize ("$dir_name/$fattach"));
fclose ($filehandle2);
$attachment = chunk_split(base64_encode($attachment));

// some smtp servers (routers) don't like (\r) in base64 strings so remove them
// It will not effect servers that do allow them

$attachment = preg_replace("/\n/i", "\n", $attachment);
$ahead .= "$attachment";
$ahead .= "\n";
$msgbody .= "$ahead";
set_magic_quotes_runtime(get_magic_quotes_gpc());


voor dit gedeelte:
PHP:
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
44
$att_file = $dir_name."/".$fattach;
if (file_exists($att_file))
{
    if (filesize($att_file) > 0)
    {
        $ahead = "--".$abound."\n";
        $ahead .= "Content-Type: application/octet-stream\n";
        $ahead .= "Content-Transfer-Encoding: base64\n";
        $ahead .= "Content-Disposition: attachment; filename=\"".$fattach."\"";
        $ahead .= "\n\n";
        set_magic_quotes_runtime(0);

         // btw, je weet zeker dat het _altijd_ binaire bestanden zijn?
        $filehandle2 = fopen($att_file, "rb");
        if ($attachment = fread($filehandle2, filesize($att_file)))
        {
            $attachment = chunk_split(base64_encode($attachment));
        }
        fclose ($filehandle2);
    }
    else
    {
     $msgbody .= "Er had eigenlijk een attachment aan deze file moeten zitten".
            ", maar deze had een grootte van 0 bytes en is er dus niet aangehangen".
            " (".$att_file.")";     
    }
}
else
{
     $msgbody .= "Er had eigenlijk een attachment aan deze file moeten zitten".
            ", maar deze kon niet worden gevonden op de server".
            " (".$att_file.")";
}

if (isset($attachment))
{
     // some smtp servers (routers) don't like (\r) in base64 strings so remove them
     // It will not effect servers that do allow them
    $attachment = preg_replace("/\n/i", "\n", $attachment);
     // variabelen liever niet quoten ($ahead .= "$attachment";)
    $ahead .= $attachment."\n";
    $msgbody .= $ahead;
    set_magic_quotes_runtime(get_magic_quotes_gpc());
}


Ik ben benieuwd wat je dan voor'n email krijgt
Maar dat incorrect bericht formaat kan dat liggen aan het feit dat het scriptje te lang moet executen?? Ik voeg namelijk eigenlijk een ander schrijf module toe die het fototje ergens anders neer dumpt. Het oude scriptje deed dat ook al allleen niet op een manier zodat ie goed door pivot werd gelezen
Dat denk ik niet..het script wordt namelijk wel volledig uitgevoerd.
Ik gok er op dat je nu een meeltje krijgt die zegt dat de attachment niet gevonden kon worden of dat de grootte 0 bytes was

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
MMm nu krijg ik gewoon een mail zonder attachement :?

Ja maar vind dat van bericht formaat incorrect zo raar omdat ik niets anders heb gedaan dan alleen maar die pivot schrijf functie erbij te zetten.
Haal ik die eruit dan werkt het script weer normaal.

Acties:
  • 0 Henk 'm!

  • marty
  • Registratie: Augustus 2002
  • Laatst online: 27-03-2023
Verwijderd schreef op 30 oktober 2003 @ 18:53:
MMm nu krijg ik gewoon een mail zonder attachement :?
Dat verbaast me niets; sterker nog, dat had ik zelfs verwacht :). Maar als je mijn code precies heb overgenomen - inclusief foutafhandeling - dan moet in die email (helemaal onderaan) als het goed is precies staan waarom de attachment er niet aan zit (omdat ofwel het bestand niet gevonden is op de server of omdat het bestand wel gevonden is maar de grootte 0 bytes is). Staat dat niet in de email ??
Ja maar vind dat van bericht formaat incorrect zo raar omdat ik niets anders heb gedaan dan alleen maar die pivot schrijf functie erbij te zetten.
Haal ik die eruit dan werkt het script weer normaal.
Dit kan ik niet helemaal volgen..wat bedoel je met bericht formaat?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Nope dat staat niet in de mail?!?!

Dat bericht formaat incorrect, dat zegt de telefoon dus... krijg het met geen mogelijkheid weg. En bij het oude script werkt ie gewoon! 8)7

Acties:
  • 0 Henk 'm!

  • marty
  • Registratie: Augustus 2002
  • Laatst online: 27-03-2023
Verwijderd schreef op 31 oktober 2003 @ 01:22:
Nope dat staat niet in de mail?!?!
ohw fuck, ben 1 fout vergeten af te vangen

PHP:
1
2
3
4
    if ($attachment = fread($filehandle2, filesize($att_file)))
    {
        $attachment = chunk_split(base64_encode($attachment));
    }


zet daarachter
PHP:
1
2
3
4
5
6
    else
    {
        $msgbody .= "Er had eigenlijk een attachment aan deze file moeten zitten".
            ", maar, hoewel deze wel kon worden geopend, deze kon niet worden ingelezen met fread".
            " (".$att_file.")"; 
    }

10 tegen 1 dat je die melding nu in je email vindt. ben benieuwd.
Dat bericht formaat incorrect, dat zegt de telefoon dus... krijg het met geen mogelijkheid weg. En bij het oude script werkt ie gewoon! 8)7
Ah, ja daar snap ik weinig van. Heb geen idee hoe dat soort dingen werken. Ik ben namelijk zo'n caveman zonder mobiel :)

p.s. je mag in het origineel wat ik hiervoor postte overigens regel 43 naar regel 20 verhuizen. staat daar niet echt op z'n plaats...

[ Voor 37% gewijzigd door marty op 31-10-2003 04:39 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Mmm Mailtje blijft leeg! :/

Erg vreemd!

* Sorry voor de late kick!

Acties:
  • 0 Henk 'm!

  • marty
  • Registratie: Augustus 2002
  • Laatst online: 27-03-2023
het hele mailtje blijft leeg nu??

zet trouwens ook de error_reporting eens op E_ALL, dat werkt soms ook zeer verhelderend :)

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Toegevoegd... maar nu ligt GPRS van Orange eruit! :/
weer even wachten!

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hij blijft leeg! :?

Maar als ik nu gewoon het goeie scriptje pak, hetgene waar wel de mailfunctie
bij werkt, kan ik dan niet gewoon even het scriptje wat er een pivot entry van maak
mee includen, wacht includen heb ik algeprobeerd, dat werkt niet, als ik dus nu zeg maar op de een of andere manier het pivot schrijf scriptje kan aanspreken nadat de mailfunctie van het vorige scriptje is voltooid, zou dat dan niet werken?
Dan moet er eigenlijk wel niet op een eventuele output gelet worden. Want ik neem aan dat ie toch nog steeds die fout melding zal blijven geven van berichtformaat incorrect.

Kan dit met een fsockopen? Of moet ik toch een andere manier zoeken?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb nu vanalles al geprobeerd maar het wil maar niet lukken.
Heb al eens gezocht op een snippet bij phpbuilder.net en via google maar ik kan niets vinden wat me hierbij kan helpen! :|

Acties:
  • 0 Henk 'm!

  • marty
  • Registratie: Augustus 2002
  • Laatst online: 27-03-2023
hmmm..je heb nog niet echt een duidelijk antwoord op m'n vragen gegeven.

- error_reporting staat inmiddels op E_ALL ?
- wat bedoel je precies met blijft leeg? Als er geen attachment aan zit dan moet je 1 van de volgende meldingen krijgen:
1. Er had eigenlijk een attachment aan deze file moeten zitten, maar deze had een grootte van 0 bytes en is er dus niet aangehangen (filename)
2. Er had eigenlijk een attachment aan deze file moeten zitten, maar deze kon niet worden gevonden op de server (filename)
3. Er had eigenlijk een attachment aan deze file moeten zitten, maar, hoewel deze wel kon worden geopend, deze kon niet worden ingelezen met fread

welke krijg je?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
marty schreef op 12 november 2003 @ 15:23:
hmmm..je heb nog niet echt een duidelijk antwoord op m'n vragen gegeven.

- error_reporting staat inmiddels op E_ALL ?
- wat bedoel je precies met blijft leeg? Als er geen attachment aan zit dan moet je 1 van de volgende meldingen krijgen:
1. Er had eigenlijk een attachment aan deze file moeten zitten, maar deze had een grootte van 0 bytes en is er dus niet aangehangen (filename)
2. Er had eigenlijk een attachment aan deze file moeten zitten, maar deze kon niet worden gevonden op de server (filename)
3. Er had eigenlijk een attachment aan deze file moeten zitten, maar, hoewel deze wel kon worden geopend, deze kon niet worden ingelezen met fread

welke krijg je?
Yepz E_ALL staat aan.

Optie 4: krijg gewoon een leeg mailtje 8)7

Acties:
  • 0 Henk 'm!

  • marty
  • Registratie: Augustus 2002
  • Laatst online: 27-03-2023
Verwijderd schreef op 12 november 2003 @ 15:32:
[...]

Optie 4: krijg gewoon een leeg mailtje 8)7
Dat kan niet. Dan denk ik dat je de code niet helemaal goed heb overgenomen. deze stappen worden namelijk gedaan:

->if (file_exists($att_file))
nee : foutmelding 2
ja :
->if (filesize($att_file) > 0)
nee : foutmelding 1
ja :
->$attachment = fread($filehandle2, filesize($att_file))
nee : foutmelding 3
ja : bestand is gevonden op de server, heeft een grootte van meer dan 0k en er moet dus data in zitten, en dit werd succesvol in de variabele $attachment gestopt
-> het enige waarom je mail dan nog leeg zou kunnen zijn is als je die $attachment vergeet aan het mailtje te plakken.

btw, vind je deze headers wel terug in de mail:
PHP:
1
2
3
4
5
        $ahead = "--".$abound."\n";
        $ahead .= "Content-Type: application/octet-stream\n";
        $ahead .= "Content-Transfer-Encoding: base64\n";
        $ahead .= "Content-Disposition: attachment; filename=\"".$fattach."\"";
        $ahead .= "\n\n";

?

[ Voor 18% gewijzigd door marty op 12-11-2003 16:55 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Dit heb ik er nu instaan:

PHP:
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
<?


error_reporting(E_ALL); 


include( "modules/moblog/config.php");
include( "/home/httpd/vhosts/arvidbux.nl/httpdocs/logmob/mmslib.php" );
include( "/home/httpd/vhosts/arvidbux.nl/httpdocs/logmob/hooks.php" );
include_once("pv_core.php");

import_request_variables( "gp" );

function apply_hooks( $contentType, $filename )
{
    global $hooks;
    if ( array_key_exists( $contentType, $hooks ) )
    {
        $hooklist = $hooks[$contentType];
        foreach( $hooklist as $hook )
        {
            $hook( $contentType, $filename ); // Apply the hook
        }
    }
}


$typeToExtension = array( IMAGE_GIF =>        ".gif",
              IMAGE_JPEG =>         ".jpg",     
              IMAGE_PNG =>          ".png",
              IMAGE_WBMP =>         ".wbmp",
              TEXT_PLAIN =>        ".txt",
              "application/smil" => ".smil",
              "audio/amr" =>       ".amr",
              "x-music/x-midi" =>    ".mid",
              "audio/midi" =>    ".mid",
              "audio/x-wav" =>      ".wav",
              "video/mpeg" =>    ".mpg",
              "video/avi" =>    ".avi",
              "video/mpeg4" =>    ".mp4",
              "application/zip" =>    ".zip",
              "text/x-imelody" =>     ".imy" );


function writeInfo( $dir, $md )
{
    $fp = fopen( $dir . "/info.txt", "wb" );

    fwrite( $fp, "CONTENT_TYPE: " . $_SERVER['CONTENT_TYPE'] . "n" );
    fwrite( $fp, "HTTP_USER_AGENT: " . $_SERVER['HTTP_USER_AGENT'] .
        "n" );
    fwrite( $fp, "HTTP_WAP_CONNECTION: " .
        $_SERVER['HTTP_WAP_CONNECTION'] . "n" );
    fwrite( $fp, "REMOTE_ADDR: " . $_SERVER['REMOTE_ADDR'] . "n" );
    fwrite( $fp, "REMOTE_PORT: " . $_SERVER['REMOTE_PORT'] . "nn" );

    /* Message comes here */

    fwrite( $fp, "X-Mms-Message-Type: " .
        messageTypeToString( $md->messageType ) . "n" );
    fwrite( $fp, "X-Mms-Transaction-ID: " .
        $md->transactionId . "n" );
    fwrite( $fp, "X-Mms-MMS-Version: " .
        mmsVersionToString( $md->mmsVersion ) . "n" );
    fwrite( $fp, "Date: " . date("Y-m-d H:i:s", mktime() ) . "n" );
    fwrite( $fp, "From: " . $md->from . "n" );
    fwrite( $fp, "To: " . $md->to . "n" );
    fwrite( $fp, "Subject: " . $md->subject . "n" );
    fwrite( $fp, "X-Mms-Message-Class: " .
        messageClassToString($md->messageClass) . "n" );
    fwrite( $fp, "X-Mms-Sender-Visibility: " .
        senderVisibilityToString($md->senderVisibility) . "n" );
    fwrite( $fp, "X-Mms-Delivery-Report: " .
        deliveryReportToString( $md->deliveryReport ) . "n" );
    fwrite( $fp, "X-Mms-Read-Reply: " .
        readReplyToString( $md->readReply ) . "n" );
    fwrite( $fp, "Content-Type: " .
        contentTypeToString( $md->contentType ) . "nn" );
    
    fclose( $fp );
}


function writeBackSendConf( $md )
{
    $reply[0] = 0x8c; /* X-Mms-Message-Type */
    $reply[1] = 0x81; /*    = m-send-conf */
    $reply[2] = 0x98; /* X-Mms-Transaction-ID */
    for ( $i = 3; $i < strlen( $md->transactionId ) + 3; $i++ )
        $reply[$i] = ord( $md->transactionId{$i-3} );
    $reply[$i++] = 0; /* Terminate string */
    $reply[$i++] = 0x8D; /* X-Mms-Version */
    $reply[$i++] = 0x90; /*    = 1.0      */
    $reply[$i++] = 0x92; /* X-Mms-Response-Status */
    $reply[$i++] = 128;  /*    = OK       */

    /* Finally write it back to the client */
    for ( $j = 0; $j < $i; $j++ )
        print( chr( $reply[$j] ) );
}


function FindExtension( $contentType )
{
    global $typeToExtension;

    if ( array_key_exists( $contentType, $typeToExtension ) )
        return $typeToExtension[$contentType];
    return ".bin";
}


/* Program starts here */
set_magic_quotes_runtime(0);
header("Content-Type: application/vnd.wap.mms-message");

if ( $_SERVER['CONTENT_TYPE'] == "application/vnd.wap.mms-message"
     && strlen( $HTTP_RAW_POST_DATA ) > 0 )
{
    $md = new MMSDecoder( $HTTP_RAW_POST_DATA );  
    $md->parse();
    
    $cur_time = mktime();
    $dir_name = MSG_STORE_DIR . "/" . $cur_time . "_" . $md->transactionId;
    mkdir( $dir_name );

    $parts = $md->parts;
    
    
    for ( $i = 0; $i < sizeof( $parts ); $i++ )
    {
        $p = $parts[$i];
        $ext = FindExtension( $p->contentType );
        
    //From here on we will perform some Pivot actions..
    
        if  ( ($ext==".txt")) {
            //We will put the text in a temporary file, after which we read it's contents...
            $txt_tmp = "tmp.dat";
            $p->writeToFile($txt_tmp);
            $handle = fopen ($txt_tmp, "rb");
            $entry['introduction'] .= "<br>".fread ($handle, filesize ($txt_tmp));


        }        
    
    //Now, let's copy the image to the right directory
        if  ( ($ext==".jpg") || ($ext==".jpeg") ||  ($ext==".gif") ||  ($ext==".png") ) {
            
            $filename = "../images/".$cur_time . $ext;
            $fattach = "part_". $i . $ext;
            
            $p->writeToFile($filename);
            list ($mywidth, $myheight) = getimagesize($filename);

            echo "size: $mywidth, $myheight<br>";

            if ( ($mywidth > $maxwidth) || ($myheight > $maxheight)) {

                include_once "modules/module_imagefunctions.php";

                $thumbfile = resize_image($filename, $maxwidth, $maxheight);
                echo $filename;
                if (strlen($thumbfile)>2) {
                    $entry['introduction'] .="<br>[[popup:$filename:(thumbnail)::center:1]]";
                } else {
                    $entry['introduction'] .="<br>[[popup:$filename:$filename::center:1]]";
                }

            } else {

                $entry['introduction'] .= "<br>[[image:$filename]]";

            }
            
        }

    //

        $mailfoto = $dir_name . "/part_" . $i . $ext;
        $p->writeToFile( $mailfoto );
        apply_hooks( contentTypeToString($p->contentType), $mailfoto );


    }



    //writeInfo( $dir_name, $md );

    //writeBackSendConf( $md );
}


// some pivot default settings:
// defaults for the entry

echo "<pre>";
print_r($entry);
echo "</pre>";

if (strlen($entry['introduction'])>8) {

    //error_reporting(0);

        // if so, save the new entry and generate files (if necesary)
        $db = new db();
        $entry['code']=">";
        $entry['date']= date('Y-m-d-H-i');

        //fix the category
        $entry['category'] = array ($entry['category']);

        $entry = $db->set_entry($entry);
        $db->save_entry();

        // remove it from cache, to make sure the latest one is used.
        $db->unread_entry($entry['code']);

        make_filename($Pivot_Vars['piv_code'], $Pivot_Vars['piv_weblog'], 'message', $message);

        // regenerate entry, frontpage and archive..
        generate_pages($Pivot_Vars['piv_code'], TRUE, TRUE, TRUE);

        $msg = "Your entry has been posted! nn";
        $msg .= "title: ".$entry['title'];
        $msg .= "nuser: ".$entry['user'];
        $msg .= "ncat: ". implode("", $entry['category']);
        $msg .= "nintroduction: ".$entry['introduction'];

        $msg_title = "[moblog] Succes!";

    } else {

        $msg = "Not posted: Could not parse your entrynn";
        $msg .= "please report this to sander@geenzorg.org , and refer to message #".date('mdHis');
        $msg_title = "[moblog] Not succesful.";

    }
// to wrap it up, send a confirmation by mail..
$msg.= "nnprocessed: ". date("dS of F Y H:i:s")."n";
$add_header=sprintf("From: %s", $confirmation_address);

if ($send_mail == "TRUE") {
mail( $confirmation_address, $msg_title, $msg, $add_header);
}
/*
// MAILSCRIPT ////////////////////////////////////////////////
    // Your mail messsage
    //$msg = "$msgcontent";
    // who the message is to
    $mailto = "mailadres";
    // who the message is from
    $mailfrom = "mailadres";
    // what is the mail subject
    $mailsubj = "$md->subject";
    // file name to attach
    //$fattach = "part_1.jpg";
    // path to file location on server
    // no trailing [ / ]
    //$fl = $dir_name;
    $fl = $mailfoto;
    /// script
    $a_name = "phpmail";
    $timer = time();
    $abound = "00-".$a_name."-".$timer."";
    $stime = date("r",time());
    $mhead = "Date: ".$stime."n";
    $mhead .= "From: ".$mailfrom."n";
    //$mhead .= "To: ".$mailto."n";
    $mhead .= "X-Priority: 3 (Normal)n";
    $mhead .= "X-Mailer: <PHP MAILER>n";
    $mhead .= "MIME-Version: 1.0n";
    $mhead .= "Content-Type: multipart/mixed; boundary="$abound"n";
    $mhead .= "Content-Transfer-Encoding: 8bitn";
    
    // some smtp servers (routers) don't like (r) in the mailbody string so remove them
    // It will not effect servers that do allow them
    
    $msg = preg_replace("/n/i", "n", $msg);
    $att_file = $dir_name."/".$fattach;
if (file_exists($att_file))
{
    if (filesize($att_file) > 0)
    {
        $ahead = "--".$abound."n";
        $ahead .= "Content-Type: application/octet-streamn";
        $ahead .= "Content-Transfer-Encoding: base64n";
        $ahead .= "Content-Disposition: attachment; filename="".$fattach.""";
        $ahead .= "nn";
        set_magic_quotes_runtime(0);

         // btw, je weet zeker dat het _altijd_ binaire bestanden zijn?
        $filehandle2 = fopen($att_file, "rb");
        if ($attachment = fread($filehandle2, filesize($att_file)))
        {
            $attachment = chunk_split(base64_encode($attachment));
        }
        fclose ($filehandle2);
    }
    else
    {
     $msgbody .= "Er had eigenlijk een attachment aan deze file moeten zitten".
            ", maar deze had een grootte van 0 bytes en is er dus niet aangehangen".
            " (".$att_file.")";        
    }
}
else
{
     $msgbody .= "Er had eigenlijk een attachment aan deze file moeten zitten".
            ", maar deze kon niet worden gevonden op de server".
            " (".$att_file.")";
}

if (isset($attachment))
{
     // some smtp servers (routers) don't like (r) in base64 strings so remove them
     // It will not effect servers that do allow them
    $attachment = preg_replace("/n/i", "n", $attachment);
     // variabelen liever niet quoten ($ahead .= "$attachment";)
    $ahead .= $attachment."n";
    $msgbody .= $ahead;
    set_magic_quotes_runtime(get_magic_quotes_gpc());
}
    $msgbody .= "--".$abound."--";
    
    mail($mailto, $mailsubj, $msgbody, $mhead);
    $je_eigen_email = "**** mailadres";
    
    //mail($je_eigen_email, "check", "Even checken hoe vaak dit aan komt!");
    ////////////////////////////////////////////////////////////
    
  */

?>

[ Voor 33% gewijzigd door Verwijderd op 12-11-2003 19:01 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik snap er niets meer van.

Ik heb nu dit op het laatste van de goeie send zonder pivot aanpassing toegevoegd:

PHP:
1
2
3
4
5
6
7
8
9
10
$fp = fsockopen ("www.arvidbux.nl", 80, $errno, $errstr, 30);
if (!$fp) {
echo "$errstr ($errno)<br>\n";
} else {
fputs ($fp, "GET /test/send.php?$HTTP_RAW_POST_DATA HTTP/1.0\r\nHost: www.arvidbux.nl\r\n\r\n");
while (!feof($fp)) {
$test = fgets ($fp,128);
}
fclose ($fp);
}

En nu krijg ik wel geen incorrect bericht formaat maar volgens mij worden de verkeerde dingen worden door gestuurd volgens mij koppen de parameters niet.

  • marty
  • Registratie: Augustus 2002
  • Laatst online: 27-03-2023
geen wonder dat je niets ziet, je heb dat hele gedeelte gecomment en er wordt dus niets van uitgevoerd.
En nu krijg ik wel geen incorrect bericht formaat maar volgens mij worden de verkeerde dingen worden door gestuurd volgens mij koppen de parameters niet.
Hoe bedoel je precies? Kan die misschien met bovenstaande te maken hebben?

Verwijderd

Topicstarter
Sorry nu ik terug lees zie ik dat ik de gecommente versie heb gepost.
Maar hij staat zonder comment op de server..

Neej denk het niet want dit is totaal iets anders ik probeer namelijk een andere weg te vinden nu.

  • marty
  • Registratie: Augustus 2002
  • Laatst online: 27-03-2023
ik heb sterk het idee dat je het verkeerde script aanspreekt ofzo. Er moet namelijk gewoon 'iets' in die mail staan. dat kan niet anders. Het feit dat je nu ook met error_reporting op E_ALL werkt en geen foutmeldingen krijgt bevestig dat ook, want je zou bijvoorbeeld minimaal op $msbody een error moeten krijgen - de eerste keer dat die variabele voorkomt staat er namelijk dit:
PHP:
1
$msgbody .= /* waarde */;
en dat mag niet zonder dat je 'm eerst geïnitialiseerd heb.

Overigens staat $msg ten eerste gecomment en doe je er ten tweede niets meer mee. Dus zelfs afgezien van het bovenstaande zal het script inderdaad niet werken.

[ Voor 3% gewijzigd door marty op 13-11-2003 17:03 ]

Pagina: 1