Seite 1 von 1

die ersten 3 zeilen eines Strings löschen

Verfasst: Donnerstag 9. September 2004, 18:01
von friesi
Hallo.

Bin neu hier im Forum und grüße gleich mal alle :)

Ich schreibe momentan an einem Python Script, welches von einem Linux Server Emails zugeschickt bekommt und in der Email sind mehrere Emails angehangen, nun soll das Script diese eine Email lesen und die angehängten Nachrichten rausfiltern und dem SpamAssassin als Emailvorlage übergeben um spätere Emails mit dieser Vorlage dann zu vergleichen und als Spam auszusortieren.

Soweit so gut, ich packe also nun in einer Email alle Spammails rein und schicke diese an die Adresse, die die Mails an das python Script leitet. Nun nimmt das Script die Email auseinander uns sucht nach dem String:
"Content-Type: message/rfc822".

Nun zu meinem Problem.
Im Output steht dann z.b. dieses:

Code: Alles auswählen

From nobody Thu Sep  9 18:43:16 2004
Content-Type: message/rfc822
Content-Transfer-Encoding: 7bit

X-MimeOLE: Produced By Microsoft Exchange V6.5.6944.0
Received: by xxx.xxx.de
        id <01C4xxxxxx7@xxx.xxx.de>;
        Thu, 9 Sep 2004 09:46:23 +0200
MIME-Version: 1.0
Content-Type: multipart/alternative;
        boundary="----_=_NextPart_003_01C49641.1A4BF8A7"
Content-class: urn:content-classes:message
Subject: mail2
Date: Thu, 9 Sep 2004 09:46:23 +0200
(.....)
Nun stören aber die ersten drei Zeilen

Code: Alles auswählen

From nobody Thu Sep  9 18:43:16 2004
Content-Type: message/rfc822
Content-Transfer-Encoding: 7bit
Bevor das Python Script diesen String als Datei abspeichert steht alles in einer Variable mit dem Namen "str".

Wie kann ich nun in der VAR str die ersten drei Zeilen des Strings entfernen?

Sorry programmiere noch nicht lange mit Python und bin froh, das ich schon soweit gekommen bin, doch nun komme ich bei einem wohl total leichten Problem nicht weiter.

Hoffe mir kann man hier helfen :)

Gruß
Friesi

Verfasst: Donnerstag 9. September 2004, 18:54
von hans
Die Zeilen sind im String durch \n (Cariage Return) getrennt. Das kannst du mit der Funktion split() auseiandernehmen.

splitlines() geht vielleicht auch.

Hans

Verfasst: Donnerstag 9. September 2004, 19:22
von Dookie
Hi friesi,

erstmal nenne die Variable anders, str ist der eingebaute Typ für Strings!
Wie Hans schon sagt, musst Du erst deinen Emailstring zerlegen und dann kannst Du ihn ohne die ersten Zeilen wieder zusammenfügen. Liest sich wilder als es ist.

Beispiel:

Code: Alles auswählen

zeilen = emailstr.splitlines(True) # in Zeilen zerlegen
newstr = "".join(zeilen[3:]) # ab der 4. Zeilen  verbinden
Gruß

Dookie

Verfasst: Donnerstag 9. September 2004, 19:39
von friesi
Ahh vielen lieben Dank :)

Nun geht es. Ist echt viel einfacher als man glaubt :)

Nur da erstmal drauf kommen 8)

Verfasst: Freitag 10. September 2004, 09:04
von fs111
Warum willst Du das denn alleszu Fuß machen, wenn es doch schon fertige E-Mail-Module gibt, mit denen sowas leicht zu machen ist?

fs111

Verfasst: Freitag 10. September 2004, 09:49
von friesi
Also ich hab noch kein Modul gefunden, welches das kann.

So kann ich im Outlook/Evolution einfach die ganzen Spammails in den Anhang einer Email packen, diese an z.b.: spam@domain.tld senden, die über einen alias in der /etc/aliases an das pytonscript geleitet wird, dieser entpackt die angehängten Mails und sendet sie an den "sa-learn --spam".

Falls es echt so ein Modul gibt, dann hab ich es nun umsonst fast fertig ;)

Verfasst: Freitag 10. September 2004, 10:36
von fs111
Nein, für Dein Gesamtproblem gibt es keine fertige Lösung, aber für die Arbeit mit emails gibt es z.B. das hier: http://python.org/doc/current/lib/module-email.html

fs111

Verfasst: Freitag 10. September 2004, 11:35
von friesi
Das benutze ich ja auch :)