Thread View: pl.comp.lang.perl
6 messages
6 total messages
Started by adamrw
Wed, 23 Oct 2013 13:04
Wide character in print at Mail/Mailer/rfc822.pm line 23.
Author: adamrw
Date: Wed, 23 Oct 2013 13:04
Date: Wed, 23 Oct 2013 13:04
30 lines
2285 bytes
2285 bytes
Witam
Napisałem skrypt, który wyciąga dane z bazy i wysyła na mail. Wykonuje się wszystko OK. Mail dociera, polskie znaki są, ale wyświetla na konsolę błąd
Wide character in print at /usr/local/lib/perl5/site_perl/5.10.1/Mail/Mailer/rfc822.pm line 23.
Ma ktoś pomysł czym to jest spowodowane ?
W skrócie mój skrypt wygląda tak:
use DBI;
use strict;
use MIME::Base64;
use POSIX;
use Mail::Send;
use utf8;
my $dbh = DBI->connect( ... );
my $query = qq{ ... };
my $sth = $dbh->prepare($query) or exit(0);
$sth->execute or die "Can't execute the query: $sth->errstr";
my $html = " { Tu generuję treść maila w html na podstawie danych z bazy } ";
my $msg = Mail::Send->new();
$msg->to('Adresat <mail@domena.com>');
$msg->subject('Temat');
$msg->add('Content-Type', 'text/html; charset=UTF-8');
my $fh = $msg->open;
print $fh $html;
$fh->close or die "couldn't send whole message: $!\n";
Pozdrawiam
Re: Wide character in print at Mail/Mailer/rfc822.pm line 23.
Author: wozniak grzegorz
Date: Fri, 25 Oct 2013 13:45
Date: Fri, 25 Oct 2013 13:45
13 lines
1376 bytes
1376 bytes
adamrw wrote: > my $fh = $msg->open; binmode $fh,":utf8"; lub utf8::encode($html); > print $fh $html; > $fh->close or die "couldn't send whole message: $!\n"; -- Pozdrawiam Grzegorz Woźniak xmpp:skinek_at_jabster_pl
Re: Wide character in print at Mail/Mailer/rfc822.pm line 23.
Author: adamrw
Date: Wed, 30 Oct 2013 14:02
Date: Wed, 30 Oct 2013 14:02
5 lines
1665 bytes
1665 bytes
W dniu piątek, 25 października 2013 15:45:59 UTC+2 użytkownik wozniak grzegorz napisał: > binmode $fh,":utf8"; > lub > utf8::encode($html); nie pomogło ani jedno ani drugie
Re: Wide character in print at Mail/Mailer/rfc822.pm line 23. [nagłówki "więcej niż ASCII" (pliterki)]
Author: Andrzej A. Filip
Date: Wed, 30 Oct 2013 15:19
Date: Wed, 30 Oct 2013 15:19
45 lines
2863 bytes
2863 bytes
adamrw <adam.warnowski@gmail.com> pisze:
> Witam Napisałem skrypt, który wyciąga dane z bazy i wysyła na
> mail. Wykonuje się wszystko OK. Mail dociera, polskie znaki są,
> ale wyświetla na konsolę błąd Wide character in print at
> /usr/local/lib/perl5/site_perl/5.10.1/Mail/Mailer/rfc822.pm line
> 23.
>
> Ma ktoś pomysł czym to jest spowodowane ? W skrócie mój skrypt
> wygląda tak: use DBI; use strict; use MIME::Base64; use POSIX;
> use Mail::Send; use utf8;
>
> my $dbh = DBI->connect( ... ); my $query = qq{ ... }; my $sth =
> $dbh->prepare($query) or exit(0); $sth->execute or die "Can't
> execute the query: $sth->errstr";
>
> my $html = " { Tu generuję treść maila w html na podstawie
> danych z bazy } ";
>
> my $msg = Mail::Send->new(); $msg->to('Adresat
> <mail@domena.com>'); $msg->subject('Temat');
> $msg->add('Content-Type', 'text/html; charset=UTF-8');
>
> my $fh = $msg->open; print $fh $html; $fh->close or die
> "couldn't send whole message: $!\n";
>
> Pozdrawiam
Czy nagłówek "To:" lub "Subject:" zawiera pliterki?
*TAK* =>
Wygląda że Mail::Mailer zakłada że w nagłówkach są tylko znaki
ASCII (hamerykański ubogi alfabet). Trzeba je zakodowywać samemu.
...
use MIME::Words qw(:all);
my $charset='UTF-8';
...
$msg->to( encode_mimewords('Adresat <mail@domena.com>', Charset =>
$charset)); $msg->subject( encode_mimewords('Temat',Charset=>
$charset));
--
Andrzej A. Filip
Pijany jest jak jagnię, świnia, małpa i lew. (Przysłowie duńskie)
Re: Wide character in print at Mail/Mailer/rfc822.pm line 23. [nagłówki "więcej niż ASCII" (pliterki)]
Author: adamrw
Date: Mon, 04 Nov 2013 08:24
Date: Mon, 04 Nov 2013 08:24
30 lines
2535 bytes
2535 bytes
Zgadza się, temat zawiera polskie znaki. Jak usunąłem polskie znaki jest OK. Ale teraz objawił się inny problem. Mam
use utf8;
co powoduje, że encode_mimewords nie bardzo działa. Zrobiłem sobie test:
use MIME::Words qw(:all);
use utf8;
print encode_mimewords("zażółć gęślą jaźń", Charset=>"UTF-8");
w wyniku pojawia się
Wide character in print at ./test2.pl line 4.
zaż=?UTF-8?Q?=F3?=łć gęślą jaźń
natomiast jak zakomentuję linię "use utf8;" to mam ok
=?UTF-8?Q?za=C5=BC=C3=B3=C5=82=C4=87=20g=C4=99=C5=9Bl=C4?= =?UTF-8?Q?=85=20ja=C5=BA=C5=84?=
lecz nie mogę pozbyć się use utf8, bo wtedy treść maila zawiera krzaki zamiast polskich liter.
Wobec tego zrobiłem tak:
my $subject = encode_mimewords("zażółć gęślą jaźń", Charset=>"UTF-8");
utf8::encode($subject);
treść maila znajduje się w zmiennej $html, więc
my $fh = $msg->open;
utf8::encode($html);
print $fh $html;
$fh->close;
i teraz jest OK - brak warning'ów, mail zawiera polskie znaki.
Dziękuję bardzo za pomoc.
Pozdrawiam
Re: Wide character in print at Mail/Mailer/rfc822.pm line 23. [nagłówki "więcej niż ASCII" (pliterki)]
Author: Andrzej A. Filip
Date: Mon, 04 Nov 2013 08:59
Date: Mon, 04 Nov 2013 08:59
39 lines
2890 bytes
2890 bytes
adamrw <adam.warnowski@gmail.com> pisze:
> Zgadza się, temat zawiera polskie znaki. Jak usunąłem polskie
> znaki jest OK. Ale teraz objawił się inny problem. Mam use utf8;
> co powoduje, że encode_mimewords nie bardzo działa. Zrobiłem
> sobie test:
>
> use MIME::Words qw(:all); use utf8; print
> encode_mimewords("zażółć gęślą jaźń", Charset=>"UTF-8");
>
> w wyniku pojawia się Wide character in print at ./test2.pl line
> 4. zaż=?UTF-8?Q?=F3?=łć gęślą jaźń
>
> natomiast jak zakomentuję linię "use utf8;" to mam ok
> =?UTF-8?Q?za=C5=BC=C3=B3=C5=82=C4=87=20g=C4=99=C5=9Bl=C4?=
> =?UTF-8?Q?=85=20ja=C5=BA=C5=84?=
>
> lecz nie mogę pozbyć się use utf8, bo wtedy treść maila zawiera
> krzaki zamiast polskich liter. Wobec tego zrobiłem tak: my
> $subject = encode_mimewords("zażółć gęślą jaźń",
> Charset=>"UTF-8"); utf8::encode($subject);
>
> treść maila znajduje się w zmiennej $html, więc my $fh =
> $msg->open; utf8::encode($html); print $fh $html; $fh->close;
>
> i teraz jest OK - brak warning'ów, mail zawiera polskie znaki.
>
> Dziękuję bardzo za pomoc. Pozdrawiam
Jeśli będziesz zakodowywać jako utf-8 a nie ISO-8859-2 to możesz
użyć
Encode::MIME::Header (Encode).
use Encode; use utf8; print encode('MIME-Header', $utf8),"\n";
print encode('MIME-Q', $utf8),"\n";
--
Andrzej A. Filip
Lepiej zapalić świeczkę, niż narzekać na ciemność. (Przysłowie chińskie)
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads