Jan: HTML-Mail zur TEXT-Mail konvertieren

Hi Leute,

ich möchte eine in sendmail eingehende E-Mail (auch text/html) automatisch in eine text/plain-Nachricht konvertieren. Es ist doch bestimmt möglich, dies mit einem Perl Modul zu tun. Nur welches?

  1. Na ja,

    wenn Du nur die Tags entfernen möchtest reicht das hier:

    $content =~ s/(<[^<]+>)//g;

    ich möchte eine in sendmail eingehende E-Mail (auch text/html) automatisch in eine text/plain-Nachricht konvertieren. Es ist doch bestimmt möglich, dies mit einem Perl Modul zu tun. Nur welches?

    1. Hi all!

      Vorsicht, vorsicht!!!

      $content =~ s/(<[^<]+>)//g;

      das ist zu gierig!!!!!

      nehmt lieber =~ s/(<[^<]+?>)//gs;

      ?=nongredy
      s=single line

      ? sonst wird < vom erste und > letzten tag genommen!
      s klappt bei tags die über ne Zeile hinaus gehen

      Tschuess Rolf

      1. Hi again?

        Sorry, mal wieder schneller gepostet als nachgedacht!

        $content =~ s/(<[^<]+>)//g;

        klappt schon, weil startendes < ja verboten

        $content=~ s/(<.+?>)//gs;

        ist die variante für schreibfaule, wie mich ;)

        Tschuess
        Ro *schweigen wär gold, wenn ...*lf

        1. Hi again?

          Sorry, mal wieder schneller gepostet als nachgedacht!

          $content =~ s/(<[^<]+>)//g;
          klappt schon, weil startendes < ja verboten

          $content=~ s/(<.+?>)//gs;

          Noch besser und vor allem sicherer wäre aber das HTML-Modul, in manchen Fällen ist der obere Ausdruck nämlich falsch (z.b. bei Javascripts und Kommentaren, die < od. > enthalten oder ähnlichem).
          Daher:

          use HTML::Parse;
          use HTML::FormatText;
          $text = HTML::FormatText->new->format(parse_html($content));

          Grüße,
          Crunch