Toon posts:

[MySQL] Query runnen bij ontvangst e-mail

Pagina: 1
Acties:

Verwijderd

Topicstarter
Kan ik als ik een mailtje ontvang, automatisch een MySQL query laten lopen, zodat de inhoud van de mail in een veld van een table komt, en het onderwerp in een andere table? Voor de ontvangst van de mail kan ik een POP3 emailadres aanmaken.

Is dit mogelijk en zoja, hoe? En is hier nog een speciale mailclient voor nodig?

  • Infinitive
  • Registratie: Maart 2001
  • Laatst online: 10-08 15:15
Er zijn mogelijkheden voor, maar afhankelijk van je kennis kan dat wel best lastig worden. Waar je volgens mij naar doelt is dat op het moment dat jouw mailserver een mail ontvangt, er een stukje code wordt uitgevoerd die een query uitvoerd op een mysql-server.

Een manier op dit te bereiken is als je gebuik maakt van sendmail is het schrijven van een zogenaamde milter (als je geen C++ wilt gebruiken, is er een perl bibliotheek voor en dan kan je met dbi gemakkelijk bij mysql komen). Wat sendmail betreft zijn er nog wel meer mogelijkheden, maar daar kunnen anderen je waarschijnlijk wel meer over vertellen.

Een alternatieve manier is om de zoveel tijd een programmatje runnen die de inhoud van je mailbox inspecteerd en dan vervolgens de nodige database queries uitvoerd.

putStr $ map (x -> chr $ round $ 21/2 * x^3 - 92 * x^2 + 503/2 * x - 105) [1..4]


Verwijderd

Topicstarter
Infinitive schreef op 07 november 2003 @ 21:56:
Er zijn mogelijkheden voor, maar afhankelijk van je kennis kan dat wel best lastig worden. Waar je volgens mij naar doelt is dat op het moment dat jouw mailserver een mail ontvangt, er een stukje code wordt uitgevoerd die een query uitvoerd op een mysql-server.

Een manier op dit te bereiken is als je gebuik maakt van sendmail is het schrijven van een zogenaamde milter (als je geen C++ wilt gebruiken, is er een perl bibliotheek voor en dan kan je met dbi gemakkelijk bij mysql komen). Wat sendmail betreft zijn er nog wel meer mogelijkheden, maar daar kunnen anderen je waarschijnlijk wel meer over vertellen.

Een alternatieve manier is om de zoveel tijd een programmatje runnen die de inhoud van je mailbox inspecteerd en dan vervolgens de nodige database queries uitvoerd.
In dat laatste ben ik meer geinteresseerd, ik zelf kan (nog) niet in C++ programmeren. Wel in PHP, zou dat ook mogelijk zijn?

Dat alternatief klinkt trouwens ook goed :)

  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 21-02 23:50
Als je op een unix/linux machine draait, is het gewoon een kwestie van een shell scriptje maken met deze inhoud:

"cat /var/mail/username"

en dit in PHP met een system() call aanroepen. Even het formaat bekijken, en aan de hand daarvan kun je je regexpen of wat niet op loslaten, om het gewenste resultaat in je dbase te zetten.

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


Verwijderd

Met PHP moet het in principe mogelijk zijn, je haalt dan de mail op uit de mailbox, uit deze mail haal je dan de variable en op basis van die variable schiet je je query af. Als je op linux draait maak je een simpel shell scriptje wat er voor zorgt dat je php script om de X minuten je mailbox checked en you're done.

Verwijderd

Met php kom je er ook, procmail zo instellen dat ie de mail door een php script gooit en klaar is kees.

Dan wordt bij elke binnenkomende mail je script gedraaid, geen ranzige trucs met cronjobs etc. etc. :)

[ Voor 34% gewijzigd door Verwijderd op 07-11-2003 22:43 ]


Verwijderd

Topicstarter
Het probeer is echter op mijn computer heb ik helaas geen linux, alleen Windows XP Pro. Op mijn server staat wel Linux, maar het probleem is, daar zit weer een max. exec. limit op van 30 seconden :( hoe kan ik dit dus het beste aanpakken?
Een PHP script maken die draait onder een Win32 omgeving en dan de php.ini zo aanpassen zodat hij standalone kan lopen, en zonder die excution limit zit?

  • Kuhlie
  • Registratie: December 2002
  • Niet online
Die timelimit van 30 seconden is standaard, maar opgelost met set_time_limit. Of accepteert jouw webprovider dat niet?

  • JQR
  • Registratie: Augustus 2001
  • Laatst online: 15-08 22:50

JQR

je kan ook in je aliases (/etc/aliases) de mail pipen naar een script:

code:
1
jqr: "|/usr/bin/php4 /home/jqr/verwerkmail.php"


maar dan moet je sendmail dat wel ondersteunen

Verwijderd

en als het parsen van een mailtje + in db zetten langer dan 30 sec gaat duren is er zowiezo iets mis denk ik, dat trekt je server nooit met een beetje stroom aan mailtjes...
Pagina: 1