PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : email's auslesen & abspeichern?



sTuDi0
01.11.2011, 10:51
Hallo,
ich bin auf der suche nach einer Methode/Programm das die emails aus einem .txt auslesen und abspeichert.

Ich habe ein großes text Dokument wo emails drin stehen wo ich brauche, ich hab mit der such funktion das "@" zeichen gesucht und abgespeichert, das dauert mit aber viel zu lange. Gibt es was, wo selber z.b das "@" auslesen und in einer .text datei abspeichert?

chVPN
01.11.2011, 10:58
grep @ deinedatei > mailadressen.txt

loewenherz
01.11.2011, 11:01
Was steht da noch so in dem Dokument und welches Format hat es?
Kann man mit RegEx machen

Blut-Engel
01.11.2011, 11:03
Mach es doch in Arrays, also das ganze in nen String, splitten mit @-Zeichen, und dann einfach sagen alles was nach .net/com/de etc. ist weglöschen, dann alles einzeln abspeichern mit ner for-Schleife (ich geh mal von C# aus).

Oder wolltest du nur das fertige Programm ohne selber schreiben zu müssen?


P.s.: er hatte geschrieben aus einer .txt-datei, ich nehme sehr stark an das das eine Textdatei ist ;-)

sTuDi0
01.11.2011, 11:11
Es ist eine text Datei, habe es mit email grabber versucht, klappt auch ganz gut. Leider ist es nur eine test version und es speichert nur 50 emails, einen key habe ich noch nicht gefunden, suche aber weiter.

loewenherz
01.11.2011, 11:11
Nein er hat geschrieben Dokument. Und ob es ein .docx, eine .pdf oder sonst was ist schon wichtig.

Also du speicherst es mal als .txt ab falls es ein Worddokument oder ähnliches ist und lässt mal mein Powershell drüber laufen.




$Quelldatei =
$Zieldatei

$Pattern = "[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+(?:[A-Z]{2}|xxx|cat|cc|ss|rh|de|com|org|net|edu|gov|mil|to |tv|fm|biz|info|mobi|name|aero|asia|jobs|museum)\b"
#$Pattern = "\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b"

$Sorting = Get-Content $Quelldatei | Sort-Object #-unique

foreach ($email in $Sorting)
{
if ($email -match $Pattern)
{
Write-Host $email
$email | add-content $Zieldatei
}
}

Write-Host "Done..."




watch: http://www.loewenherz.cc/?p=1789
Ist eigentlich nicht für so einen Fall geschrieben aber nun ja vielleicht hat es ja hin

bursali
01.11.2011, 11:13
Ich denke mal Du hast ein Windows System?
Wenn ja, dann lade Dir Python von hier (http://www.python.org/getit/) und installiere es.

Danach speicherst Du folgendes unter "C:\Python27" mit dem Namen extractmail.py ab.



#!/usr/bin/env python

import os
import re
import sys

def grab_email(file):
"""Try and grab all emails addresses found within a given file."""
email_pattern = re.compile(r'\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b',
re.IGNORECASE)
found = set()
if os.path.isfile(file):
for line in open(file, 'r'):
found.update(email_pattern.findall(line))
for email_address in found:
print email_address

if __name__ == '__main__':
grab_email(sys.argv[1])
Gehst per CMD in den Python Ordner zB. "C:\Python27" und führst es wie folgt aus:

python.exe extractmail.py old.txt > new.txt

Danach werden die eMails von old.txt zu new.txt extrahiert.

Mit freundlichen Grüßen,
~bursali

loewenherz
01.11.2011, 11:19
(r'\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b',
Mit freundlichen Grüßen,
~bursali

Ja die pattern stehen zwar in der RFC, funktioniert auch, sammelt aber invalide eMail Adressen
http://www.regular-expressions.info/email.html

erst gestern ausprobiert;)

sTuDi0
01.11.2011, 11:34
Ich denke mal Du hast ein Windows System?
Wenn ja, dann lade Dir Python von hier (http://www.python.org/getit/) und installiere es.

Danach speicherst Du folgendes unter "C:\Python27" mit dem Namen extractmail.py ab.



#!/usr/bin/env python

import os
import re
import sys

def grab_email(file):
"""Try and grab all emails addresses found within a given file."""
email_pattern = re.compile(r'\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b',
re.IGNORECASE)
found = set()
if os.path.isfile(file):
for line in open(file, 'r'):
found.update(email_pattern.findall(line))
for email_address in found:
print email_address

if __name__ == '__main__':
grab_email(sys.argv[1])
Gehst per CMD in den Python Ordner zB. "C:\Python27" und führst es wie folgt aus:

python.exe extractmail.py old.txt > new.txt

Danach werden die eMails von old.txt zu new.txt extrahiert.

Mit freundlichen Grüßen,
~bursali


Heist, das ich davor die .txt datei als "old.txt" im pyton ordner abspeichern muss?

bursali
01.11.2011, 11:36
Nicht unbedingt, kannst es beliebig abspeichern.
Sagen wir Du nennst es mailliste123.txt, dann musst Du den Befehl einfach so ausführen:

python.exe extractmail.py mailliste123.txt > new.txt


Mit freundlichen Grüßen,
~bursali

sTuDi0
01.11.2011, 11:37
Hat geklapt, wunderbar! Vielen Dank @bursali
Danke Leute!