Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]271[/thread]

Mail header decodieren: alternative zu Encode::decode

Leser: 1


<< >> 10 Einträge, 1 Seite
FReAK La Marsch
 2004-05-30 04:15
#2611 #2611
User since
2003-08-14
38 Artikel
BenutzerIn
[Homepage] [default_avatar]
Hallo,
ich habe mal wieder ein ganz doofes problem und zwar kann ich bei CGIs
Code: (dl )
use Encode qw/decode/
nicht verwenden.(das gibt mir immer nen Premature end of script headers)

Ich würde aber gerne den Betreff einer Mail decodieren.
Bisher mache ich das auf der Konsole problemlos mit
Code: (dl )
$subject = decode('MIME-Header', $subject);


Da das aber per CGI irgendwie nicht geht suche ich eine einfache Alternative zu Encode. Kennt da jemand was?

Noch viel Spaß,
FReAK\n\n

<!--EDIT|FReAK La Marsch|1085876233-->
Strat
 2004-05-30 12:33
#2612 #2612
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
irgendwie werde ich daraus nicht schlau, was du wie decoden willst...
wenn du MIME-Encoding machen willst, versuche mal CPAN:MIME::Base64

Nebenbei: da fehlt (wohl nur hier im Forum) ein ; am Ende der use-Zeile...
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
FReAK La Marsch
 2004-05-30 13:39
#2613 #2613
User since
2003-08-14
38 Artikel
BenutzerIn
[Homepage] [default_avatar]
Guten Morgen.

Ich lese mit Perl einige meiner Mails aus, um sie dann weiterzuverarbeiten.
Dabei landet der Betreff in $subject.

Sind in dem Betreff irgendwelche Sonderzeichen, so kommt er encodiert bei mir an.

In $subject steht so z.B. "=?iso-8859-1?q?=48=69=6c=66=e4=21?="

Diesen String will ich nun leserlich machen und nach dem Aufruf von
Code: (dl )
$subject = decode('MIME-Header', $subject);
erhalte ich auch den String "Hilfä!"

Da ich aber leider Encode::decode nicht verwenden kann suche ich da nach einer Alternative. Bei google bin ich nicht fündig geworden und in cpan verlauf ich mich immer.

Ich werd aber mal in MIME rumsuchen, da das zu laufen scheint.
Nur wenn ich
Code: (dl )
$subject = MIME::Base64::decode_base64($subject);
verwende, so erhalte ich einen leeren String oder auch nichts :-(
FReAK La Marsch
 2004-05-30 14:23
#2614 #2614
User since
2003-08-14
38 Artikel
BenutzerIn
[Homepage] [default_avatar]
Ok, jetzt hab ichs dann doch :-)
mans ollte schon schauen wie der Header encoded ist und das q in "=?iso-8859-1?q?=48=69=6c=66=e4=21?=" zeigt mir an daß ich QuotedPrint verwenden muß und nicht Base64.

Welche Encodings können in nem Mailheader noch auftauchen?
Relais
 2004-05-30 18:32
#2615 #2615
User since
2003-08-06
2246 Artikel
ModeratorIn
[Homepage] [default_avatar]
[quote=FReAK La Marsch,30.05.2004, 02:15]Da das aber per CGI irgendwie nicht geht suche ich eine einfache Alternative[/quote]
Ja was heißt denn das?

"Da ich mein Auto, seitdem es in der Garage steht, irgendwie nicht mehr auf die Straße bekomme, suche ich nach einer Alternative zum Autofahren?"
Erst denken, dann posten --
27. Deutscher Perl- u. Raku -Workshop (Termin wird noch gesucht) 2025 in München.

Winter is Coming
FReAK La Marsch
 2004-05-30 19:18
#2616 #2616
User since
2003-08-14
38 Artikel
BenutzerIn
[Homepage] [default_avatar]
Das heißt, daß ich bei einigen Modulen, wenn ich sie per CGI verwenden will, immer ein "Premature end of script headers" erhalte. Schon beim alleinigen Einbinden per use.

Da ich keine weiteren Informationen darüber bekommen kann, die Admins bei mir nie Zeit haben und immer nur schwammig sagen "das wird an den Sicherheitseinstellungen liegen, glaub ich mal" und auch sonst nie was konstruktives leisten, ist es für mich einfacher, wenn ich eine Alternative finde, bevor ich ne Ewigkeit im dunkel rumprobiere.

Falls jemand weiß warum die Module nicht gehen würd ich mich natürlich freuen :-)

Funktionierende Module:
Date::Time, MIME::Base64, MIME::QuotedPrint, Net::Pop3, POSIX, Getopt::Std, Mail::Message::Attachment:Stripper

Module mit Fehler bei use:
Encode, Mail::Message, MIME::Head
coax
 2004-05-30 20:42
#2617 #2617
User since
2003-08-11
457 Artikel
BenutzerIn
[default_avatar]
[quote=FReAK La Marsch,30.05.2004, 17:18]Falls jemand weiß warum die Module nicht gehen würd ich mich natürlich freuen :-)[/quote]
Das laesst sich vielleicht herrausfinden in dem du CGI::Carp einbindest und dir damit die Fehlermeldungen in der HTML-Ausgabe praesentieren laesst.

Code: (dl )
1
2
3
4
use CGI;
use CGI::Carp qw/fatalsToBrowser warningsToBrowser/;
use strict;
use warnings;


Bzw. du schaust in den Logfiles nach wodurch der Fehler hervorgerufen wird.
,,Das perlt aber heute wieder...'' -- Dittsche
esskar
 2004-05-30 22:27
#2618 #2618
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
zum decodieren des subjects, würde ich folgendes nehmen

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
use MIME::WordDecoder;

sub decode_words
{
my $value = shift;
my $wd = default MIME::WordDecoder;

$wd->handler("WINDOWS-1251" => "KEEP");
$wd->handler("BIG5" => "KEEP");

return ($value ? $wd->decode($value) : "");
}
FReAK La Marsch
 2004-05-30 22:27
#2619 #2619
User since
2003-08-14
38 Artikel
BenutzerIn
[Homepage] [default_avatar]
Danke für den Hinweis!
Auf die Logfiles kann ich leider nicht zugreifen, ich hab da nur ein dämliches Webfrontend, das mir die eine nichtssagende Meldung anzeigt, aber mit Carp weiß ich jetzt bescheid.

Die Module sind einfach nicht verfügbar :-)

Da wer dich wohl mal einen Admin in die Ecke drängen müssen und fragen warum die für den Webuser nicht verfügbar sind, wenn sie lokal laufen.

DANKE!
pq
 2004-06-02 14:55
#2620 #2620
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
[quote=FReAK La Marsch,30.05.2004, 17:18]Das heißt, daß ich bei einigen Modulen, wenn ich sie per CGI verwenden will, immer ein "Premature end of script headers" erhalte. Schon beim alleinigen Einbinden per use.
[/quote]
das ist kein perl-fehler. sieh bitte zuerst in der FAQ nach:
http://wiki.perl-community.de/bin....rror500
Quote
Da ich keine weiteren Informationen darüber bekommen kann, die Admins bei mir nie Zeit haben

oh, die bösen admins. werden die bei dir dafür bezahlt, die beizubringen,
wie man CGI-skripte schreibt und auch dafür, sie zu debuggen?
.oO (bin ich froh, dass ich kein admin bin...)

Quote
Falls jemand weiß warum die Module nicht gehen würd ich mich natürlich freuen :-)

ich würde mal sagen, die sind nicht installiert. ob du sie installieren kannst,
hängt von mehreren faktoren ab, aber auch dafür haben wir hier
selbstverfreilich eine FAQ (bitte selber suchen)
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
<< >> 10 Einträge, 1 Seite



View all threads created 2004-05-30 04:15.