--- mail2lj/mail2lj.pl 2007/08/31 17:02:46 1.8 +++ 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 @@ -1028,7 +1043,7 @@ Options: Insert the From: field from the e-mail as the first line of the posted message. The field is added in plain text (without any HTML-formatting - see '--fromh' for that). For slight - antispam protection, '\@' is replaced by '[_\@_]'. The option + antispam protection, '\@' is replaced by '$newdog'. The option can be negated ('--nofrom'). Default is '--nofrom'. Note: this option is independent from '--obfuscate' (i.e. the prepended From is always obfuscated, even if the rest of the @@ -1043,7 +1058,7 @@ Options: -o, --obfuscate Obfuscate all e-mail addresses that are present in the body of the message. For slight antispam protection, '\@' in these - addresses is replaced by '[_\@_]'. The option can be negated + addresses is replaced by '$newdog'. The option can be negated ('--noobfuscate'). Default is '--noobfuscate'. --spaces, --keepspaces