Anzeige:
Ergebnis 1 bis 3 von 3

Thema: Name des Versenders aus Email-Header mit Shell-Script ermitteln

  1. #1
    Xfreak
    Registriert seit
    Mar 2002
    Ort
    St. Pölten
    Beiträge
    192

    Name des Versenders aus Email-Header mit Shell-Script ermitteln

    Hallo!

    Ich möchte eine "Mail-Antwort"-Maschine in Shell-Scripten schreiben. Dazu wird eine Mail zuerst auf der Festplatte (oder einer Ramdisk) gespeichert (per Fetchmail geholt) und einerseits in den IMAP-Ordner des jeweiligen Benutzers verschoben und gleichzeitig derart zerlegt, dass sowohl die Absender-Email (funktioniert schon) und der Name des Benutzers vorliegen (das is das Problem):

    Beispiel-Header:
    =============================================
    Received: from server.provider.com [215.73.21.136]
    by localhost with POP3 (fetchmail-5.9.11)
    for cyrus@localhost (single-drop); Wed, 25 Sep 2002 14:54:08 +0200 (CEST)
    Received: from mx0.gmx.net ([213.165.64.100]) by server.provider.com with Microsoft SMTPSVC(5.0.2195.2966);
    Wed, 25 Sep 2002 15:13:08 +0200
    Received: (qmail 20275 invoked by uid 0); 25 Sep 2002 12:54:51 -0000
    Date: Wed, 25 Sep 2002 14:54:51 +0200 (MEST)
    From: "Dipl. Ing. Hans Wurst" <hans.wurst@provider.de>
    To: petzi.baer@theater.de
    MIME-Version: 1.0
    Subject: testnachricht von gmx
    =============================================

    Die Email-Adresse bekomme ich mit:

    RETURNPATH=`/usr/bin/awk '/From:*@*/ {print $0}' /tmp/mail_tmp | cut -d"<" -f2 | cut -d">" -f1 | head -n 1

    Den Namen wollte ich per:

    NAME=`/usr/bin/awk '/From:*@*/ {print $0}' /tmp/mail_tmp | head -n 1 | tr -d '"' | cut -d":" -f2 | cut -d"<" -f1`

    herausfischen.

    Allerdings befindet sich dann am Ende und am Anfang ein Leerzeichen.
    In diesem Fall also: " Dipl. Ing. Hans Wurst " (ohne die Anführungszeichen)

    Wie bekomm ich die weg?
    Danke schon im Voraus!

  2. #2
    Premium Mitglied Avatar von RapidMax
    Registriert seit
    Aug 2001
    Beiträge
    1.740
    Code:
    /usr/bin/awk '/^From:.+@.+/ {print $0}' email.txt | \
    head -n 1 | \
    sed 's/^From: *"\(.*\)" <\([[:alnum:].-]*@[[:alnum:].-]*\)>/Die Addresse \2 gehört zu \1/'
    Reagiert aber Empfintlich auf eine falsche Syntax. Aber es handelt sich dann einfach um Mehrarbeit, die grundsätzliche Idee ist so besser ersichtlich.

    Gruss, Andy

  3. #3
    Xfreak
    Registriert seit
    Mar 2002
    Ort
    St. Pölten
    Beiträge
    192

    So gehts auch...

    Danke!

    An "sed" hab ich auch schon gedacht, nur hab ich damit noch nie etwas gemacht...

    NAME=`/usr/bin/awk '/From:*@*/ {print $0}' /tmp/mail_tmp | head -n 1 | tr -d '"' | cut -d":" -f2 | cut -d"<" -f1 | sed 's/ *$//'`

    So funktionierts - mit Hilfe der Anleitung von: http://www.tldp.org/LDP/abs/html/x14575.html

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •