Ik hoop dat dit topic niet zo snel dicht is als de vorige. Ik wil zeggen dat de vorige problemen verholpen zijn en ik intussen al veel bij heb geleerd. Een week geleden wist ik nog -niks- over PHP. 
Dit is geen vervolgtopic, maar een nieuwe vraag.
Sommigen weten al waar ik mee bezig ben, anderen niet, dus wederom de uitleg:
Ik haal een piped e-mail op uit stdin, deze wordt bewerkt en de output gaat naar een SMS API. (voorheen deed ik dit met de mailfunctie)
Plain text mailtjes uit stdin zijn geen probleem, pas als er een HTML mailtje wordt opgehaald, geeft dat een hoop rommel. Ik wil deze rommel eruit filteren.
Ik had een kant en klaar scriptje van internet geplukt, maar deze was niet echt hufterproof. Na veel testen kwamen er steeds meer gebreken naar boven. Na uren dingen aanpassen en verbeteren waren nog niet alle problemen verholpen, dus besloot ik om het anders aan te pakken.
Ik heb nu eigenhandig een filter gemaakt, die de plain text uit het mailtje moet vissen.
In plaats van:
Heb ik nu:
Dit met behulp van:
Ook de = linebreak is geëlimineerd, dus de regel ziet er precies uit als wanneer het mailtje in plain text was verzonden.
Ik moet alleen nog een dingetje zien op te lossen:
De eerste twee regels en de laatste regel moeten weg. Daarna kan ik met trim de overbodige lege regels aan het einde en begin van de string weghalen.
Welke functie moet ik hier voor gebruiken? Het liefst een beetje newbie vriendelijk.
Dit is geen vervolgtopic, maar een nieuwe vraag.
Sommigen weten al waar ik mee bezig ben, anderen niet, dus wederom de uitleg:
Ik haal een piped e-mail op uit stdin, deze wordt bewerkt en de output gaat naar een SMS API. (voorheen deed ik dit met de mailfunctie)
Plain text mailtjes uit stdin zijn geen probleem, pas als er een HTML mailtje wordt opgehaald, geeft dat een hoop rommel. Ik wil deze rommel eruit filteren.
Ik had een kant en klaar scriptje van internet geplukt, maar deze was niet echt hufterproof. Na veel testen kwamen er steeds meer gebreken naar boven. Na uren dingen aanpassen en verbeteren waren nog niet alle problemen verholpen, dus besloot ik om het anders aan te pakken.
Ik heb nu eigenhandig een filter gemaakt, die de plain text uit het mailtje moet vissen.
In plaats van:
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
| This is a multi-part message in MIME format. ------=_NextPart_000_02BB_01CA043A.6DE10C40 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable 0708906 - 06-07-2009 22:35 - P 2 STORMSCHADE ACHTERKADE VIA POLDERWEG = Eenh: VIA593 - Vianen - post Vianen - monitorcode ------=_NextPart_000_02BB_01CA043A.6DE10C40 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML><HEAD> <META http-equiv=3DContent-Type content=3D"text/html; = charset=3Diso-8859-1"> <META content=3D"MSHTML 6.00.6000.16850" name=3DGENERATOR> <STYLE></STYLE> </HEAD> <BODY bgColor=3D#ffffff> <DIV> <DIV>0708906 - 06-07-2009 22:35 - P 2 STORMSCHADE ACHTERKADE VIA = POLDERWEG Eenh:=20 VIA593 - Vianen - post Vianen - monitorcode</DIV> <DIV> </DIV></DIV></BODY></HTML> ------=_NextPart_000_02BB_01CA043A.6DE10C40-- |
Heb ik nu:
code:
1
2
3
4
5
6
7
| charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable 0708906 - 06-07-2009 22:35 - P 2 STORMSCHADE ACHTERKADE VIA POLDERWEG Eenh: VIA593 - Vianen - post Vianen - monitorcode ------=_NextPart_000_02B2_01CA043A.53776BB0 |
Dit met behulp van:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
| if (strpos($headers, "boundary=") !== false) { $splitplain = explode("Content-Type: text/plain;", $message); $splithtml = explode("Content-Type: text/html;", $splitplain[1]); $trimmed = trim($splithtml[0]); $clean = str_replace(array("=\n", "=20", "=3D"), array("", "", "="), $trimmed); } else { $clean = trim($message); } |
Ook de = linebreak is geëlimineerd, dus de regel ziet er precies uit als wanneer het mailtje in plain text was verzonden.
Ik moet alleen nog een dingetje zien op te lossen:
De eerste twee regels en de laatste regel moeten weg. Daarna kan ik met trim de overbodige lege regels aan het einde en begin van de string weghalen.
Welke functie moet ik hier voor gebruiken? Het liefst een beetje newbie vriendelijk.