--- mail2lj/mail2lj.pl 2007/08/31 17:06:24 1.9 +++ mail2lj/mail2lj.pl 2014/05/06 00:42:15 1.10 @@ -55,7 +55,7 @@ use HTTP::Request ; use URI::Escape ; use MIME::Parser ; use MIME::Words qw/decode_mimewords encode_mimeword/ ; -use Unicode::MapUTF8 qw/to_utf8 from_utf8/ ; +use Unicode::MapUTF8 qw/to_utf8 from_utf8 utf8_charset_alias/ ; use HTML::TokeParser ; # Changed by LG - commented out configs. @@ -205,7 +205,7 @@ if ( exists $Opt{'comments'} ) { $Opt{'prop_opt_nocomments'} = "" ; $Opt{'prop_opt_noemail'} = 1 ; } elsif ( $Opt{'comments'} =~ /^\s*((off)|(no))\s*$/i ) { - $Opt{'prop_opt_nocomments'} = 1 + $Opt{'prop_opt_nocomments'} = 1 ; } else { $Opt{'prop_opt_nocomments'} = $Opt{'comments'} ; } @@ -218,6 +218,7 @@ if ( exists $Opt{'comments'} ) { $Opt{'prop_taglist'} = join( ", ", @opt_taglist ) if ( @opt_taglist ) ; # Convert $opt_ljcut_text to UTF8. +$opt_ljcut = 0 unless defined $opt_ljcut ; # Safety if ( defined $opt_ljcut_text ) { $opt_ljcut_text = to_utf8({ -string => $opt_ljcut_text, -charset => $SystemCharset }) ; @@ -233,6 +234,11 @@ href2utf8( \%Opt, $SystemCharset) ; umask 077 ; +# Changed by LG: make sure that 'UTF-8' is recognized as a valid charset +# along with "UTF8" ;-) +utf8_charset_alias({ 'UTF-8' => 'UTF8' }); + + # Changed by LG - moved from above. my $alias = shift @ARGV || "none" ; my $mp = new MIME::Parser() or die "new MIME::Parser(): $!\n" ; @@ -613,8 +619,17 @@ sub str2utf8 { sub post_me2req { my ($me, $e, $hints) = @_ ; - my $mebh = $me->bodyhandle() or die "post_message(): no body?\n" ; + # Changed by LG - if no body found (may happen sometimes in multipart + # messages) then attempt to grab the very first MIME part. This is + # somewhat hack-ish, but generally works ;-) + # my $mebh = $me->bodyhandle() or die "post_message(): no body?\n" ; + my $mebh = $me->bodyhandle() ; my $mehh = $me->head() ; + if ( ! defined $mebh ) { + # Hack! And get the corresponding header instead of overall one. + $mebh = $me->parts(0)->bodyhandle() or die "post_message(): no body?\n" ; + $mehh = $me->parts(0)->head() ; + } my $charset = $mehh->mime_attr("content-type.charset") || $e ; my $subject = hdr2utf8($me->get('Subject') || "", $charset) ; chomp $subject ; # Changed by LG