🚀 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 06:04
Wide character in print at Mail/Mailer/rfc822.pm line 23.
#51458
Author: adamrw
Date: Wed, 23 Oct 2013 06:04
34 lines
1014 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.
#51459
Author: wozniak grzegorz
Date: Fri, 25 Oct 2013 15:45
15 lines
221 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.
#51460
Author: adamrw
Date: Wed, 30 Oct 2013 07:02
6 lines
185 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)]
#51461
Author: "Andrzej A. Fili
Date: Wed, 30 Oct 2013 16:19
45 lines
1529 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)
=?ISO-8859-2?Q?Re:_Wide_character_in_print_at_Mail/Mailer/rfc822.pm?= =?ISO-8859-2?Q?_line_23._[nag³ówki_"wiêcej_ni¿_ASCII"_(pliterki)]?
#51462
Author: adamrw
Date: Mon, 04 Nov 2013 00:24
36 lines
1159 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)]
#51463
Author: "Andrzej A. Fili
Date: Mon, 04 Nov 2013 09:59
39 lines
1469 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żółć gęślą jaźń 
> 
> natomiast jak zakomentuję linię "use utf8;" to mam ok 
> zażółć gęślÄ 
> … jaźń 
> 
> 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