[PHP] forward email met imap

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

Onderwerpen


Verwijderd

Topicstarter
ok .. ik wordt helemaal gek...

Ik kan

1) inloggen op een imap server
2) zien hoeveel mailtjes ik heb
3) kan het mailtje selecteren (mbv imap)

Maar nu wil ik graag het mailtje door versturen naar een ander email adres (andere server dus), maar het moet ook werken met attachments.

Heeft iemand tips?

  • t-x-m
  • Registratie: November 2003
  • Laatst online: 24-08 11:21

t-x-m

.NET Nerd

Deze heb je al gezien neem ik aan??
Waarom gaat het niet ??
Foutmeldingen ??
Wat heb je al geprobeerd??
enz..

[ Voor 38% gewijzigd door t-x-m op 22-12-2005 16:24 ]

GC.Collect();


Verwijderd

Topicstarter
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
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
<?php

$server = ""; 
$user = ""; 
$pass = "";

$imap = imap_open("\{$server/imap}INBOX",$user,$pass );


if ($hdr = imap_check($imap)) 
{
    echo "Num Messages " . $hdr->Nmsgs ."\n\n<br><br>";
    
    $numMessages=$hdr->Nmsgs;
    
    for($i=1;$i<=$numMessages;$i++)
    {
        $info = imap_fetchstructure($imap,$i);
        
        //$message = imap_fetchbody($imap,$i,"1"); 
        
        $numparts = count($info->parts);
        

        // find if if multipart message
        if ($numparts > 1) 
        {
        
           foreach ($info->parts as $part) 
           {
        
               print_r($part);

              $disposition=strtolower($part->disposition);
              
              switch($disposition)
              {
                  case "attachment" :
                  {
                      
                      $type=$part->type;
                      
                            ############## type 
                            if ($type == 0) 
                            { 
                               $type = "text/"; 
                            } 
                            elseif ($type == 1) 
                            { 
                               $type = "multipart/"; 
                            } 
                            elseif ($type == 2) 
                            { 
                               $type = "message/"; 
                            } 
                            elseif ($type == 3) 
                            { 
                               $type = "application/"; 
                            } 
                            elseif ($type == 4) 
                            { 
                               $type = "audio/"; 
                            } 
                            elseif ($type == 5) 
                            { 
                               $type = "image/"; 
                            } 
                            elseif ($type == 6) 
                            { 
                               $type = "video"; 
                            } 
                            elseif($type == 7) 
                            { 
                               $type = "other/"; 
                            } 
                      
                            //print($type);
                            
                            
                            
                            $coding = $part->encoding;
                            
                            print "coding = " . $coding . "<br>";
                            ######## coding 
                            
                            $coding = $part->encoding; 
                            if ($coding == 0) 
                            { 
                               $message = imap_7bit($message); 
                            } 
                            elseif ($coding == 1) 
                            { 
                               $wiadomsoc = imap_8bit($message); 
                            } 
                            elseif ($coding == 2) 
                            { 
                               $message = imap_binary($message); 
                            } 
                            elseif ($coding == 3) 
                            { 
                               $message = imap_base64($message); 
                            } 
                            elseif ($coding == 4) 
                            { 
                               $message = quoted_printable($message); 
                            } 
                            elseif ($coding == 5) 
                            { 
                               $message = $message; 
                            } 
                            
                            echo "<h1>" . $message . "</h1>"; 
                            ########## coding end 
                            
                            
                      
                      //print_r($part->dparameters);                              
                      break;
                  }
              }
              
           }
           
           
           
        } else {
           // only one part so get some useful info
           echo "Only one part";
        }       
        
        
    }
}


imap_close($imap);
?>


ik kan dus al door mijn messages lopen, maar nu moet ik ze nog forwarden ... snap er niks meer van. Ik zie wel dat er een attachment is, ik zie ook welk bestandsnaam ... maar snap niet hoe ik die nu door verstuur naar vb jantje@domein.nl .... met natuurlijk de attachment ...

  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 14:28
offtopic: met [code=php][/code] of [php][/php] krijg je leuke maar vooral handige kleurtjes in je code!

Ontopic: moet je niet gewoon een nieuwe message maken? Dus gewoon nieuwe message, inhoud en bijlagen kopieren en vervolgens verzenden.

  • stekkel
  • Registratie: Augustus 2001
  • Laatst online: 17-09 08:05
IMAP is slechts een message store. Wanneer je mail gaat forwarden zul je toch echt verstand moeten hebben van rfc2822, mime etc etc. Na dat je met behulp van van vorengenoemde het voor elkaar hebt gekregen om een bericht te maken zal je het moeten versturen met bijv. SMTP. Ten slotte kan je het bericht nog opslaan in een mapje op de imap server (sent) d.m.v. van append.

Suc6.

edit:

Ik zie in een vorig bericht dat je ook met squirrelmail hebt gespeeld. Kijk daar maar eens wat een forward precies inhoudt. N.B. Een forward is niet simpel, zeker niet wanneer het een multipart/mixed bericht is met een multipart/alternative en een attachment mime part. (zelfs squirrelmail doet dat niet goed) Het makkelijkste is een forward as attachment waar je het originele mailtje als een nieuwe attachment in het forward mailtje hangt.

[ Voor 38% gewijzigd door stekkel op 22-12-2005 17:36 ]


  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 14:28
Om je al die kennis een beetje te besparen zou je ook gewoon een mailclass als phpmailer kunnen gebruiken. Dan heb je in elk geval een degelijke basis om mailtjes mee te verzenden.

  • orf
  • Registratie: Augustus 2005
  • Laatst online: 00:44

orf

Indien mogelijk kun je een mailtje ook pipen naar een PHP script:

http://www.evolt.org/article/Incoming_Mail_and_PHP/18/27914/

Acties:
  • 0 Henk 'm!

  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 14:28
Wat heb je daaraan betreffende het topic? Als ik het goed begrijp is dat toch bedoeld om mail te ontvangen?
Pagina: 1