Sziasztok!
Adott egy email fiók, benne sokezer levél.
A feladat: kigyűjteni az olvasatlan levelek feladóinak email címét és egy csv vagy xls fileba exportálni.
Ezt hogy tudnám megcsinálni?
Help?
köszönöm!
PZ
- 2436 megtekintés
Hozzászólások
IMAPon fersz hozza? Ez esetben fogsz egy szamodra kedves programnyelvet es IMAP libet es lekodolod. Ha maildirkent fersz hozza, akkor meg grep-elhetsz benne.
- A hozzászóláshoz be kell jelentkezni
az egyetlen hiba, hogy egyetlen programnyelvet sem ismerek:)
- A hozzászóláshoz be kell jelentkezni
akkor legyen mondjuk ruby
require 'net/imap'
require 'csv'
IMAP_HOST = 'imap.gmail.com'
IMAP_PORT = 993
IMAP_SSL = true
IMAP_USER = 'user@gmail.com'
IMAP_PASS = 'password'
FOLDERS = [ 'INBOX' ]
imap = Net::IMAP.new(IMAP_HOST, IMAP_PORT, IMAP_SSL)
imap.login(IMAP_USER, IMAP_PASS)
senders = Hash.new()
FOLDERS.each do |folder|
imap.select(folder)
imap.search(["NOT", "SEEN"]).each do |message_id|
msg = imap.fetch(message_id,'ENVELOPE')[0].attr['ENVELOPE']
sender = "#{msg.from[0].mailbox}@#{msg.from[0].host}"
begin
senders[sender] += 1
rescue
senders[sender] = 1
end
end
end
imap.close
CSV.open('senders.csv', 'wb') { |csv| senders.to_a.each { |elem| csv << elem }}
- A hozzászóláshoz be kell jelentkezni
nagyon köszönöm!!!!!
- A hozzászóláshoz be kell jelentkezni
Most hoztad meg a kedvem egy kis ruby-s ismerkedésre. :)
- A hozzászóláshoz be kell jelentkezni
+1 PHP-ban meg tudok oldani sok mindent ( nem profi módon ), C-t tanultam, de ennek az egyszerűsége nagyon tetszik.
- A hozzászóláshoz be kell jelentkezni
> Adott egy email fiók
Ezt pontosítani kell! Ha saját fájlrendszerben: mbox vagy maildir vagy milyen formátumban? Ha webes levelezőben: POP3, IMAP vagy milyen hozzáférésed van?
szaszi
- A hozzászóláshoz be kell jelentkezni
bármilyen hozzáférésem van ssh, imap, pop, akármi...
centos
- A hozzászóláshoz be kell jelentkezni
Akkor egyszeru. Odamesz, ahol tarolva van, aztan
grep -R From * | uniq -c
(fejbol irtam, szoval nezd meg, mukodik-e, lehet, hoyg nem is From a neve)
Vagy tovabb:
grep -h -R From * | awk -F: '{print $2}'|uniq -c | sort -n
Biztos van egyszerubb meg szebb is, de ez igy elsore egesz turheto.
- A hozzászóláshoz be kell jelentkezni
De ha jól sejtem akkor ez nem sokat törődik azzal, hogy a levél olvasott-e avagy nem. Plusz nem árt az uniq _előtt_ sortolni. És kéne egy -m1, hogy kevesebb legyen a hamis találat (mondjuk csak maildir esetén), és szintén ezért jobb lenne ^From:-ra keresni.
- A hozzászóláshoz be kell jelentkezni
Az olvasott levél, imap könyvtárban lévő fájlának a végén, van egy S-betű.
Vagyis csak arra kell szűrni, ami nem S-sel végződik vagy a vége ez "2,".
- A hozzászóláshoz be kell jelentkezni
Feltéve ha maildir és nem mbox... vagy valami egész más :D
Ha meg mbox akkor a grep felesleges, az awk bőven jó grep helyett is, csak meg kell kraftolni hozzá a praktikus regexpet.
Plusz ha már kötekszem, akkor a csillaggal is érdemes vigyázni, 24,000 levélnél nekem az ls * lefut, az ls * * már nem. A jelen esetben ez aligha probléma, de nem árt erre is figyelni.
- A hozzászóláshoz be kell jelentkezni
Nem irtam, hogy nem tokeletes megoldas, csak egy otlet, amin el lehet indulni. En legalabbis alt. jobban orulok ennek, mintha szorol szora le lenne irva - ami amugyis a helyzettol fugg.
Courier-IMAP eseten pl. igy van a mappaszerkezet:
ls -1 Maildir
courierimaphieracl
courierimapkeywords
courierimapsubscribed
courierimapuiddb
courierpop3dsizelist
cur
new
tmp
Ha a Maildir-ben adod ki a "grep -R" parancsot, akkor rekurzivan olvassa az olvasott+olvasatlant, ha a "cur" mappaban, akkor csak az olvasottak lesznek. De mas IMAP megvalositas lehet mas is, nem ismerem. Ezert mondom, hogy a fneti csak otlet, lehet rajta finomitani, de mar el lehet indulni valamerre (pl. man grep)
jaigen, igazad van, uniq elott tenyleg kell egy "sort", ezt kihagytam.
Meg a keresesi kriterium is jobb (bar ez sem zarja ki a fw levlet, amikor pl. seamonkey a teljes fejlecet beidezi, tehat min. ket "From:" sor lesz). Szoval lehet ezt finomitani.
- A hozzászóláshoz be kell jelentkezni
Maildir esetén az -m1 épp arra kell a grepnek, hogy az első találatnál elégedetten hátradőljön és ne keressen tovább, hanem pattanjon a következő fájlra. Ez persze mbox esetén nem végtelenül optimális, ehe.
- A hozzászóláshoz be kell jelentkezni
Koszi, megint tanultam. Ezt az "m1" opciot sose hazsnaltam, bar igeny lett volna ra.
- A hozzászóláshoz be kell jelentkezni