[addon mail-library] MailLibrary – stahujte si maily z mail serveru
- greeny
- Člen | 405
Nette: >= 2.0.8
PHP: >= 5.3
Git: repozitář
Addons: MailLibrary
MailLibrary je addon pro Nette umožňující stahování mailů z mail serveru.
Jakékoliv návrhy nebo bugy hlaste na gitu (issues/pull requests)
Editoval greeny (4. 3. 2013 14:04)
- Vojtěch Dobeš
- Gold Partner | 1316
Bylo by super, kdyby ta knihovnička nabízela klasické metody. Všechna ta magická rozhraní jsou sexy, ale stačí, když budou pro ty standardní metody aliasem.
- Filip Procházka
- Moderator | 4668
- Do composer.json se verze nepíšou, když máte balíček verzovaný – raději udělej tag na repozitáři ;)
- Měl bys definovat i autoloading
- CharsetConverter by slušela výjimka v konstruktoru
- zdá se mi to, nebo procházíš úplně všechny emaily, co ve schránce jsou a načítáš je do paměti? asi by bylo dobrý mít tam nějakou formu stránkování
Až na těch pár drobností to vypadá dobře :)
- greeny
- Člen | 405
Do composer.json se verze nepíšou, když máte balíček verzovaný – raději udělej tag na repozitáři ;)
S composerem se teprve učím, odstraním to.
Měl bys definovat i autoloading
Nepostará se náhodou o autoloading RobotLoader? Vzhledem k tomu, že Nette je povinnou součástí addonu, tak ho tam uživatel mít bude.
CharsetConverter by slušela výjimka v konstruktoru
Přidám hned jak to půjde ;)
zdá se mi to, nebo procházíš úplně všechny emaily, co ve schránce jsou a načítáš je do paměti? asi by bylo dobrý mít tam nějakou formu stránkování
To nevím, asi si špatně pochopil kód. Je stránkování si obstará sám
uživatel tím, že získá počet mailů a jejich idčka pomocí daných
funkcí.
Jedinné co se načte vždycky je seznam idček mailů. Headery a struktury se
načítají až v případě potřeby.
- enumag
- Člen | 2118
O autoloading se RobotLoader nepostará, respektive neměl bys s tím počítat. Téměř všechny knihovny s composerem mají autoloading vyřešený v composer.json takže je zvykem složku vendor do RobotLoaderu nedávat a načíst si pouze vendor/autoload.php, který vygeneruje Composer během instalace závislostí.
Vzhledem k tomu kolik e-mailů může ve schránce být mi připadá i loadování všech IDček trochu nevhodné. Je možné řešit to jinak?
- Filip Procházka
- Moderator | 4668
S tím autoloadingem je to trochu složitější. RobotLoader bys rozhodně na knihovny, které instaluješ přes Composer, používat neměl! Tak ho tam prosím doplň dle schématu, až budeš mít chvilku ;)
Jedinné co se načte vždycky je seznam idček mailů. Headery a struktury se načítají až v případě potřeby.
I to je moc :) Co když budu mít ve schránce milion emailů? Vytvoříš pole o milionu objektů, abys načetl jeden?
Od několika tisíc emailů začne být úplně jedno, že načítáš jenom IDčka :)
- Honza Kuchař
- Člen | 1662
Omlouvám se, tu na fóru chybí link na doplněk v prvním příspěvku, tak jak to mají ostatní doplňky, to mě zmátlo.
- Honza Kuchař
- Člen | 1662
Mimochodem zvážil bych jméno doplňku – není totiž úplně jasné, co dělá… Většinou se totiž maily z PHP aplikací odesílají.
- Honza Kuchař
- Člen | 1662
Nedělal bych z toho moloch. Stačí konverze mailu do Nette\Mail\Mail. Tak už s tím provedeš co potřebuješ, pošleš přes jaký ovladač chceš.
- Vojtěch Dobeš
- Gold Partner | 1316
Velmi dobrá připomínka, stačí, když to bude umět číst maily, třídit je do složek apod. Odesílání je v Nette krásně vyřešeno.
- greeny
- Člen | 405
Na githubu je už první část nové verze 2.0, která je výsledkem refactoringu téměř celé knihovny. Také je k tomuto jádru, které už se nejspíš měnit nebude, sepsána dokumentace (pro zvědavce ;) ) Jakékoliv návrhy na vylepšení uvítám, kdo by chtěl vidět kód, může si na GitHubu najít branch „2.0“.
Dokumentace zde:
http://greeny.github.com/MailLibrary/
- one-two
- Člen | 80
Pěknej tool, mám pár dotazů:
- plánuje se práce se složkama (přesun do podsložek, stromová struktura atd.)?
- s jakejma emailovejma serverama to kamarádí?
- zvládá to v pohodě český znaky v názvech složky?
Měl sem totiž tu čest „patlat“ jednoho emailovýho klienta a byl sem
dost zoufalej, když sem viděl jak si každej server (Google, Courier, Dovecot)
jinak řeší systémový názvy složek a k tomu občas mrskne takovej
pseudo-prefix, nehledě na to, že na jednom dokonce asi dvě standardní PHP
imap_*
funkce prostě fungovaly špatně… co sem pak koukal do
Squirrelmailu tak tam to snad řešili tak, že natvrdo vytvořej spojení se
serverem a volaj přímo IMAP příkazy :)
- greeny
- Člen | 405
No, momentálně je vývoj z nedostatku času pozastaven, ale mám v plánu pokračovat tak do týdne…
- práce se složkama již je téměř hotová a bude plně podporována
- v podstatě zatím testováno jen na Googlu, ale ve 2.0 bude podpora driverů (IMAP driver, POP3 driver, apod.), takže v podstatě jakýkoliv mailserver…
- český znaky by to zvládat mělo, uvidím, jak proběhne test na různé mailové servery…
Co se týče imap_* fcí, je to hrůza a nedá se s tím dělat – proto jsem začal psát tuto knihovnu
- greeny
- Člen | 405
na gitu je branch 2.0 kde je aktuálně co mám hotové + http://greeny.github.io/MailLibrary je dokumentace jak to pojede
Editoval greeny (3. 10. 2013 21:38)
- greeny
- Člen | 405
Tak se mi trochu uklidnila škola a já se mohl vrátit k MailLibrary…
Přehled novinek v nové verzi (akruálně branch dev)
- podpora driverů (zatím mám jen IMAP, ale časem možná přibydou další)
- filtrování mailů (podobně jako Nette\Database)
- podpora více Mailboxů
- odstranění závislosti na Nette (tohle neberte prosím jako že bych měl něco proti Nette… Nette je super, ale po důkladné inspekci kódu jsem zjistil, že použití Nette v MailLibrary je maximálně parkrát třída Strings a Object, což je skoro zbytečné)
- budu psát i testy (zatím tam žádné nejsou, ale budou)
Hledal jsem taky na GitHubu a Googlu a nenašel jsem skoro žádnou podobnou knihovnu, tak doufám, že se alespoň trochu rozšíří. Příjmám jakékoliv nápady ;)
P.S.: Nevím, když už MailLibrary není závislá na Nette, jestli tohle není trošku offtopic, ale doufám, že mě za to neukamenujete :D
- greeny
- Člen | 405
Přílohy byly naimplementovány a oficiálně byla vydána verze 3.0.0, dostupná přes composer i na githubu (branch master). V nejbližší nové verzi ještě přidám podporu pro řazení mailů. Pokud byste náhodou někdo měli nějaký nápad, co by se hodilo přidat, klidně mi napište, rád na tom zapracuju.
greeny
- forkman
- Člen | 72
Přílohy fungují naprosto skvěle. Jen jsem narazil na pár problémů:
- v dokumentaci se uvádí stále starý název metody getAllMails(), nyní už je to jen getMails(),
- v ImapDriver.php na řádku 264 mi Nette hlásilo že $contact->adl je undefined,
- mám problém s nastavováním flagů, nebo to neumím :) předpokládám, že by mělo fungovat
<?php
$mail->setFlags(array(Mail::FLAG_SEEN), true);
?>
- s tím souvisí i poslední věc, dají se nějak filtrovat jen maily, které jsou nepřečtené?
Dík za skvělou práci!
- greeny
- Člen | 405
- v dokumentaci se uvádí stále starý název metody getAllMails(), nyní už je to jen getMails(),
Dokumentaci nevím, kdy a kde jsi četl, ale aktuální je na http://greeny.github.io/MailLibrary a tam je getMails()
- v ImapDriver.php na řádku 264 mi Nette hlásilo že $contact->adl je undefined,
Možná jsem někde zapomněl ověřit existenci proměnné, podívám se na to.
- mám problém s nastavováním flagů, nebo to neumím :) předpokládám, že by mělo fungovat
<?php $mail->setFlags(array(Mail::FLAG_SEEN), true); ?>
Nastavování flagů je trochu jinak, viz dokumentace.
Příklad:
<?php
$mail->setFlags(array(Mail::FLAG_SEEN => TRUE, Mail::FLAG_DRAFT => FALSE));
?>
- s tím souvisí i poslední věc, dají se nějak filtrovat jen maily, které jsou nepřečtené?
Jako třeba
<?php
$selection->where(Mail::SEEN, FALSE);
?>
?
Děkuji za pozitivní ohlas ;)
Editoval greeny (18. 2. 2014 19:07)