Schrift
[thread]4446[/thread]

Umlaute in Mail Subject: UTF8 Subjct mit MIME::Lite

Leser: 1


<< >> 9 Einträge, 1 Seite
Gast Gast
 2006-12-13 12:40
#37415 #37415
Hallo,

ich habe ein "normales" Konatktformular, in welches ein User Betreff und Body versenden kann. Wenn im Betreff Umlaute auftreten, werden diese nicht richtig codiert. Die Website selbst läuft als utf8 - Site.
Folgender Code mit MIME::Lite
--------------------
1 $logger->debug("Subject is UTF8:", utf8::is_utf8($p{subject}) );
2 $logger->debug("Body is UTF8:", utf8::is_utf8($p{body}));
3
4 #utf8::encode($p{subject});
5 #utf8::encode($p{body});
6
7 my %mail_p = (
8 From => $p{from},
9 To => $p{to},
10 Subject => $p{subject},
11 Data => $p{body},
12 );
13 my $mime = MIME::Lite->new(%mail_p);
14 $mime->attr('content-type.charset' => 'UTF8');
15 $mime->send;
==========================
Liefert dann als Ergebnis im Logfile (Zeile 1,2 )
[2006/12/13 11:21:11] App.pm 301 - Subject is UTF8:
[2006/12/13 11:21:11] App.pm 302 - Body is UTF8:

in der Mail (kmail) ist der Body Ok, der Header in der Form
Ãrger öÃ&¼Ã&¤ mit Ãlfirma
statt: Ärger mit öäü Ölfirma

in Zeile 4 und 5 kann stehen
utf8::upgrade, decode, encode, das Ergebnis ist immer gleich.

Wenn ich aber in Zeile 10
Subject => 'öäü'
schreibe, passt alles.

Wer weiß Rat ?

Rolf
rs@plusw.de

P.S.
Ich kann zwar ein neues Thema öffnen aber keine Antworten schreiben, dazu ist wohl eine Registr. notwendig, die erzeugt aber bei mir Fehler und die Fehlermeldung blieb bis heute unbeantwortet...
renee
 2006-12-13 13:37
#37416 #37416
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Mal an Dich ist raus (mit Account-Daten)!

Ich schau mir das mit dem UTF-8 gleich mal an, aber versprechen kann ich nichts ;)
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Rolf_PlusW
 2006-12-13 13:51
#37417 #37417
User since
2006-12-13
22 Artikel
BenutzerIn
[default_avatar]
[quote=renee,13.12.2006, 12:37]Ich schau mir das mit dem UTF-8 gleich mal an, aber versprechen kann ich nichts ;)[/quote]
Nach meinen Erfahrungen mit unicode würde ich auch niemand mehr etwas versprechen ...
renee
 2006-12-13 14:46
#37418 #37418
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Das hier sollte helfen:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
#!/usr/bin/perl

use strict;
use warnings;
use CGI qw(:standard);
use Encode;

print header('text/plain');

my $var = param('test');
$var = decode_utf8($var);
print $var;
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
renee
 2006-12-13 14:49
#37419 #37419
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Also auf Deinen Code bezogen:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
use Encode;

$logger->debug("Subject is UTF8:", utf8::is_utf8($p{subject}) );
$logger->debug("Body is UTF8:", utf8::is_utf8($p{body}));

$p{subject} = decode_utf8($p{subject});
$p{body] = decode_utf8($p{body});

my %mail_p = (
From => $p{from},
To => $p{to},
Subject => $p{subject},
Data => $p{body},
);
my $mime = MIME::Lite->new(%mail_p);
$mime->attr('content-type.charset' => 'UTF8';);
$mime->send;
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
esskar
 2006-12-13 20:25
#37420 #37420
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
use strict;
use warnings;
use Encode;
use Encode::Guess;
use MIME::Words qw(:all);

my $mime = MIME::Lite->new( {
From => mime_escape( $p{from} ),
To => mime_escape( $p{to} ),
Subject => mime_escape( $p{subject} ),
Data => $p{body},
} );
$mime->attr('content-type.charset' => 'UTF8';);
$mime->send;

sub mime_escape {
my $data = shift || '';
my $utf8 = decode("Guess", $data);

return encode_mimewords( $utf8 );
}
ptk
 2006-12-13 20:59
#37421 #37421
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
MIME::Words braucht man nicht:
Code: (dl )
1
2
use Encode qw(encode decode);
print encode("MIME-Header", "äöüß\x{20ac}");
Es gibt auch MIME-Q oder MIME-B, falls man explizit quoted-printable oder base64 haben möchte.
esskar
 2006-12-13 22:21
#37422 #37422
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
[quote=ptk,13.12.2006, 19:59]MIME::Words braucht man nicht:
Code: (dl )
1
2
use Encode qw(encode decode);
print encode("MIME-Header", "äöüß\x{20ac}");
Es gibt auch MIME-Q oder MIME-B, falls man explizit quoted-printable oder base64 haben möchte.[/quote]
stimmt, vergess ich ab und zu.
kann man auf die eigentlich auch Encode::Guess loslassen? -- um heraus zu finden, dass sie mime encodiert sind?
ptk
 2006-12-13 23:07
#37423 #37423
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Funktioniert Encode::Guess überhaupt außerhalb des CJK-Raums? Wie soll den Encode::Guess den Unterschied zwischen cp437 und cp850 oder MacRoman und iso-8859-1 erkennen?
<< >> 9 Einträge, 1 Seite



View all threads created 2006-12-13 12:40.