🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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.
#52562
Author: adamrw
Date: Wed, 23 Oct 2013 13:04
30 lines
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.
#52563
Author: wozniak grzegorz
Date: Fri, 25 Oct 2013 13:45
13 lines
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.
#52564
Author: adamrw
Date: Wed, 30 Oct 2013 14:02
5 lines
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)]
#52565
Author: Andrzej A. Filip
Date: Wed, 30 Oct 2013 15:19
45 lines
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)]
#52566
Author: adamrw
Date: Mon, 04 Nov 2013 08:24
30 lines
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)]
#52567
Author: Andrzej A. Filip
Date: Mon, 04 Nov 2013 08:59
39 lines
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