Al eerder stelde ik deze vraag onder de topic "E-mail ophalen van pop3 server d.d. 25-10-2010", maar daar kwam geen reactie op.
Ik wil graag een script maken waarmee het volgende kan realiseren.
a) het uitlezen van de pop3 server
b) uit elkaar peuteren van de mailinformatie
c) relevante onderdelen (subject + bericht + attachment) opslaan in msql
d) plaatsen van de info op de website
e) omzetten van de attachmentinfo (foto) in het jpg formaat (geen idee hoe dit gaat)
f) het plaatsen van de foto op de website.
Graag advies over de verschillende onderdelen of een alternatieve methode, waarvoor alvast mijn dank.
Ok, ik snap wat je nu precies wil, echter moet je voordat je dit realiseerd wel rekening houden dat 'elke gebruiker' een fysiek emailadres moet hebben op je site wil dit werken.
Anders wordt alles in een stort postbak gegooid en wordt het niet gebruikers gebonden. Een andere manier is om het zodanig te filteren dat aan de hand van het email adres (Verzender) het naar het juiste profiel geschreven wordt.
Uiteraard is het mogelijk wat jij wel, maar denk wel dat hier heel veel bij komt kijken. Dit is technisch vrij hoog, en tijd rovend.
Tevens raad ik ook aan om de attatchments te resizen voordat je ze ophaald, want Ihpone foto's en menig andere smartphones hebben hoge resoluties en bestandsgrootte.
Vervoglens moet je het probleem zien te tackelen (mits je alle foto's centraal opslaat) dat hij alle afbeeldingen een unieke naam geeft, en niet de naam aanhoudt die hij origineel heeft. Dit puur voor het feit dat bijv nokia standaard afbeeldingsnamen heeft (afb001), wat zou betekenen dat als 100 mensen een nokia hebben de kans zeer groot wordt dat het bestanden met de zelfde naam tegen zal komen en dus gaat overschrijven.
Zorg ervoor dat je zeker bent dat het foto's zijn, niet dat iemand een willekeurige attatchment kan mailen wat leid tot malware, trojans, etc.
Bedrijven zoals Facebook hebben er een groot ontwikkel team achterzitten, jij bent 1 persoon (uiteraard niet lullig bedoeld!!!!). Dat maakt een zeer groot verschil.
Overweeg dit soort punten en kijk of je het nog wel aantrekkelijk vind, het kan zeker een leuk project zijn mits je zelf al genoeg ervaring in php en MySQL hebt.
Als je een mailbox uit wil lezen (zoals POP3 als IMAP) dan kan dat met imap_open(). Zo zijn er daarin diverse functies te vinden om de rest van de mails uit te lezen.
Voor Chris NVT:
Bedankt voor je suggesties. Aan de meeste ervan had ik al gedacht en (theoretische) oplossingen voor. Het project lijkt me leuk en leerzaam. Wanneer het eenmaal foutloos werkt, kijk ik weer uit naar een volgende uitdaging, maar dat geldt ook voor anderen.
Nu de hamvraag: hoe realiseer ik het onderdeel van pop3 of imap naar site en msql.
Hopelijk heb je hier ook een suggestie voor, al is het maar een beginnetje.
Voor Aar:
Bedankt voor je tip. Ik ga dit meteen verder uitzoeken.
Met vooral dank voor de tip van Aar, is het me gelukt om naar een website te mailen.
De basis hiervoor was imap.class.php (zie topic Class: Imap/pop3 reader d.d.29-05-2008. door Felix b, waarvoor alsnog ook veel dank)
I.v.m. met de eigenschappen van de hostprovider heb ik een kleine aanpassing moeten maken in de connect(), t.w.: $opties[$counter++] = "pop3/novalidate-cert";
Daarnaast moest de php versie naar 5.3.3. worden opgehoogd
Hiervoor is de volgende ..htaccess in httpdocs geplaatst: AddHandler x-httpd-php53 .php (let op de 2 spaties na 53)
E-mails met en zonder bijlagen worden naar een apart e-mailaccount gemaild.
Met het ontwikkelde script + imap.class worden de ontvangen e-mails en eventuele bijgaande afbeeldingen ingelezen.
Het subject en de body worden opgeslagen in msql en de imap_base64 attachementinformatie wordt met behulp van imagecreatefromstring() en imagejpeg() omgezet in het jpg formaat. De afbeelding wordt m.b.v. o.a. imagecopyresampled() qua grootte aangepast en met o.a. imagerotate() zonodig gekanteld.
Ik ben nog aan het zoeken naar een oplossing voor het automatisch reageren op de exif orientation (mogelijk m.b.v. ImageMagick)
De afbeeldingen worden hernoemd en verplaatst met een aanduiding met time() als basis, aangevuld met .'-'.$i++ (bijvoorbeeld: 1336380799-4.jpg) wat in de msql ook de corresponderende id is tussen de verschillende tabellen.
Het script draait vooralsnog naar wens en mogelijk moeten er nog wat kleine aanpassingen plaatsvinden.