Autor | Zpráva | ||
---|---|---|---|
matak Profil |
hledám celý den, ale netušil jsem, že je to stále skoro neuskutečnitelný úkon, našel jsem snad jen tyto zdroje
https://github.com/plancake/official-library-php-email-parser nevhodné, neumí parsovat attachments http://stuporglue.org/mailreader-php-parse-e-mail-and-save-attachments-php-version-3/ spousta nesmyslů jako ukládání do dtb, ale neumí si poradit s většinou emailů http://code.google.com/p/php-mime-mail-parser/ mailparse extension nelze nainstalovat ani na linux server ani na windows :( prostě ani na jednom se mi to nepodařilo http://www.nameko.org nepoužitelné, když nejsou v emailu všechny hlavičky které očekává neumí zpracovat má někdo ještě tip na další? existuje vůbec něco použitelného? |
||
Micruss Profil |
#2 · Zasláno: 10. 10. 2013, 17:30:17
zkus phpMailer knihovnu
|
||
matak Profil |
#3 · Zasláno: 11. 10. 2013, 09:24:18
Micruss:
jestl se nepletu to umí emaily odesílat ne parsovat |
||
aDAm Profil |
#4 · Zasláno: 11. 10. 2013, 09:31:29
matak:
tak to přeju pevné nervy...posledních několik dní zápasím s imap_ funkcemi php pro vytvoření jednoduchého webmail rozhraní do jedné aplikace. Toho co vymyslel jak se budou mail zprávy vytvářet a ukládat bych nejraději vzal trubkou přes hlavu....načtení emailů, tedy jen jejich IDček což je vlastně jen interval 1-x je jeden příkaz, načtení jednotlivých zpráv pak v cyklu co mail to příkaz, pak načtení hlavičky každého mailu, pak vyčtení hlaviček, pak načtení struktury, pak vyčtení struktury.....proč to dělat jednoduše když to jde složitě že ;) |
||
matak Profil |
#5 · Zasláno: 11. 10. 2013, 12:39:45
tak s timhle zapasim uz tak 3 roky :), ale pomalinku vzdavam ze existuje neco co mi dokáže parsovat email v jeho raw podobě
|
||
DarkMeni Profil |
#6 · Zasláno: 11. 10. 2013, 15:09:48
Nepodařilo se mi najít, jak vypadá raw podoba emailu, ale jestli je to jen jeho zdroják, jako třeba:
Received: via dmail-2008.19 for +INBOX; Tue, 3 Feb 2009 19:29:12 -0600 (CST) Received: from abc.luxsci.com ([10.10.10.10]) by xyz.luxsci.com (8.13.7/8.13.7) with ESMTP id n141TCa7022588 for <user-999@xyz.luxsci.com>; Tue, 3 Feb 2009 19:29:12 -0600 Return-Path: <test@sender.com> Received: from [192.168.0.3] (verizon.net [44.44.44.44]) (user=test@sender.com mech=PLAIN bits=2) by abc.luxsci.com (8.13.7/8.13.7) with ESMTP id n141SAfo021855 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NOT) for <test@domain.com>; Tue, 3 Feb 2009 19:28:10 -0600 Message-ID: <4988EF2D.40804@domain.com> Date: Tue, 03 Feb 2009 20:28:13 -0500 From: "Test Sender" <test@sender.com> User-Agent: Thunderbird 2.0.0.19 (Windows/20081209) MIME-Version: 1.0 To: "Test Recipient" <test@domain.com> Subject: Example Message Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Comment: Lux Scientiae SMTP Processor Message ID - 1233710941-9110394.93984519 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head></head> <body bgcolor="#ffffff" text="#000000"> <b> Example HTML-formatted email Message.<br></b> </body></html> Ale když je ten raw format něco jinýho, mohl bys mi dát nějakej příklad, jak to asi tak vypadá? |
||
DJ Miky Profil |
#7 · Zasláno: 11. 10. 2013, 16:30:44
DarkMeni:
Ano, to je surová podoba e-mailu, nicméně může být i složitější. Pokud má soubor více částí (tzv. multipart) – např. čistý text, text formátovaný HTML, přílohy (které se ještě navíc enkódují do tisknutelných znaků) apod., může to vypadat třeba takhle: From: Laura Rios <laura@oara.sf.ca.us> To: steve@ntecom.za Subject: Sara is two! Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="Snip snip snip" --Snip snip snip Content-Type: text/enriched; charset="us-ascii" Hi, Steve. Sara had her second birthday yesterday. Can you believe it? She is so <bold>big</bold>! Now if we can just live through the "terrible twos" for a year, <italic>sigh</italic>. Here are a few words from her. I've also scanned in a picture of her party. Tell your boss thanks for letting us keep in touch by email. Laura --Snip snip snip Content-type: audio/basic Content-transfer-encoding: base64 Content-description: Sara says "I love you, Steve" (awww) /Xr++/hoX2lqeXt8d/7z8/D5+PLw7/b+9fD09319/vz5f3j//Pz9fHp7fvrs9Wz/eH59d /////////////////y8= --Snip snip snip Content-type: image/gif Content-transfer-encoding: base64 Content-description: Cutting the cake, sort of R0lGODdhQAHIAKMAAAAAAP+2bQAAACQAAAAASEgAAAAkSEgkJG0kJJEkAABIkZFIJCRttrZt l7Vry4B9aM+yKjifMosAADs= --Snip snip snip-- Samozřejmě i na to jde napsat vlastní parser, ale zabere to zbytečně moc času. |
||
matak Profil |
#8 · Zasláno: 11. 10. 2013, 22:13:05
s tim vlastnim parserem si nejsem jisty, myslím, že to není úplně triviální záležitost a bude to dost složité, protože existuje mnoho standardů a v praxi je také spousta serverů porušuje a je to dost guláš, ve kterém se musí ten programátor vyznat, určitě to není práce na víkend
|
||
Časová prodleva: 12 dní
|
|||
DarkMeni Profil |
#9 · Zasláno: 23. 10. 2013, 18:16:47
Ještě sháníš ten parser nebo si už něco našel?
|
||
matak Profil |
#10 · Zasláno: 23. 10. 2013, 22:09:30
nenašel, pomocí Jyxo\Parseru jsem si email rozparsoval do objektu a s tim pracuju idealni to neni, mam proste dvoji data, zdroj a jeste objekt ve kterem jsou rozhazene prilohy, hlavicky, contenty atd.
|
||
DarkMeni Profil |
#11 · Zasláno: 23. 10. 2013, 23:08:20
Něco sem zkusil napsat, ale taky je to psaný objektově - dá se s tim udělat třeba něco takovýho:
(A nepodarí si zatim s typem message/partial) <?php include "raw_mail_parser.php"; $mail = new RAWMailParser(); $mail->setCharset('utf-8')->setIgnoreLevel(2)->setTypePriority('text/html')->load("message_1207.eml"); //$mail->debug(); $sender = $mail->getSender(); echo 'Odesílatel: '.$sender['name'].' <'.$sender['email'].">\n", 'Datum: '.$mail->getDate('d.m.Y H:i:s')."\n", 'Předmět: '.$mail->getSubject()."\n\n", $mail->getMessage('text/html')."\n\n"; $embedded_message = $mail->getEmbeddedMessage('text/html'); if($embedded_message){ echo "-------Původní zpráva-------\n"; $headers = $mail->getEmbeddedHeaders(); if($headers){ $sender = $headers['sender']; echo 'Od: '.$sender['name'].' <'.$sender['email'].'>'."\n", 'Datum: '.$mail->getDate('d.m.Y H:i:s', $headers['timestamp'])."\n", 'Předmět: '.$headers['subject']."\n\n"; } echo $embedded_message; } echo "\nPočet příloh: ".count($mail->getAttachmentsList())."\n"; $mail->saveAttachments('Attachments/'); echo "\n\nLog: "; var_dump($mail->getProcessLog()); $mail->freeMemory(); var_dump($mail->getSavedList("Attachments/")); ?> Takže kdyby si chtěl, tak ti můžu poslat zdroják třídy |
||
Alphard Profil |
#12 · Zasláno: 24. 10. 2013, 00:50:12
Ideálně zdrojáky zveřejněte, jestli funguji. Tazatel není jediný, koho to může zajímat. Bez nich je [#11] DarkMeni zcela bezcenné.
|
||
DarkMeni Profil |
#13 · Zasláno: 24. 10. 2013, 13:32:31
Ten zdroják má kolem 600 řádků (asi 25 000 znaků - 25kB) takže by ho to tu asi po 2000 znacích odseklo. Spíš sem to chtěl poslat matakovi na email kdyby měl o ten zdroják zájem.
|
||
matak Profil |
#14 · Zasláno: 24. 10. 2013, 13:45:55
rád se podívám, info@romanmatena.cz, ale jak říkám zpracovávám maily v počtu okolo milionu, je v tom úplně všechno, špatné rfc, nevalidní pravidla, formáty, atd. špatně natavené kodování jiný content, prostě potřebuju něco co fakt počítá se vším něco co používá thunderbird, nebo outlook :)
ale rád se podívám co máš |
||
DarkMeni Profil |
Nebo to vlastně můžu dát na pastebin.com, to bude asi jednodušší:
http://pastebin.com/v37ULpFy Co sem to testoval, tak s většinu emailu zpracoval docela dobře, ale záleží na tom, co s tim pak budeš potřebovat dělat dál (jako jestli děláš nejakou emailovou aplikaci jako seznam.cz nebo něco jinýho) A zjistil sem že existuje ještě několik dalších typů, na který sem nenašel příklad jak takovej typ vypadá: třeba message/partial, message/external-body, multipart/signed a multipart/encrptet Takže jestli máš i několik emailu v tomto typu, tak by pak možná šlo dopsat podporu i pro tyhle typy, ale chtělo by to nějakej příklad s takovým emailem Edit: oprava několika chyb v dokumentaci |
||
matak Profil |
#16 · Zasláno: 24. 10. 2013, 15:09:22
díky, mrknu na to
snad jen signed, ostatni mi z hlavy nic nerika, signed bude elektronicky podepsaný myslím |
||
Časová prodleva: 11 let
|
0