From c14948d39c96a77764babc5fe8e030d2e10bdca7 Mon Sep 17 00:00:00 2001 From: fukachan Date: Sun, 18 Feb 2001 11:40:10 +0000 Subject: enable encode/decode for quoted-printable strings --- fml/lib/FML/MIME.pm | 27 ++++++++++++++++++++------- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/fml/lib/FML/MIME.pm b/fml/lib/FML/MIME.pm index 46d238e2..ab005792 100644 --- a/fml/lib/FML/MIME.pm +++ b/fml/lib/FML/MIME.pm @@ -25,18 +25,18 @@ sub decode_mime_string my $charset = $options->{ 'charset' } || 'euc-japan'; if ($charset eq 'euc-japan') { - use Jcode; use MIME::Base64; - if ($str =~ /=\?ISO\-2022\-JP\?B\?(\S+\=*)\?=/i) { $str =~ s/=\?ISO\-2022\-JP\?B\?(\S+\=*)\?=/decode_base64($1)/gie; } - if ($str =~ /=\?ISO\-2022\-JP\?B\?(\S+\=*)\?=/i) { - $str =~ s/=\?ISO\-2022\-JP\?B\?(\S+\=*)\?=/decode_base64($1)/gie; + use MIME::QuotedPrint; + if ($str =~ /=\?ISO\-2022\-JP\?Q\?(\S+\=*)\?=/i) { + $str =~ s/=\?ISO\-2022\-JP\?Q\?(\S+\=*)\?=/decode_qp($1)/gie; } } + use Jcode; &Jcode::convert(\$str, 'euc'); $str; } @@ -46,12 +46,25 @@ sub encode_mime_string { my ($str, $options) = @_; my $charset = $options->{ 'charset' } || 'iso-2022-jp'; + my $encode = $options->{ 'encode' } || 'base64'; + my $header = '=?'. $charset; + my $trailor = '?='; + use Jcode; &Jcode::convert(\$str, 'jis'); - $str = encode_base64($str); - $str =~ s/\n$//; - return '=?'. $charset . '?B?' . $str . '?='; + if ($encode eq 'base64') { + $header .= '?B?'; + $str = encode_base64($str); + } + elsif ($encode eq 'qp') { + $header .= '?Q?'; + $str = encode_qp($str); + $str =~ s/(\s)/${trailor}${1}${header}/g; + } + + $str =~ s/\n$//; + return ($header . $str . $trailor); } -- cgit v1.2.1