[Perl] MIME::Entityでメール作成時にToのダブルクォートで痛い目
メモ。
そもそも、下の話がなぜ出てきたのか、ちうと。
http://cast-a-spell.at.webry.info/201005/article_5.html
以下のコードで、正しく折り返しされない。
この原因だが、"abcとなっている箇所の閉じクォートがないため、Mail::Header.pmの_fold_lineメソッドで、ここは改行しちゃだめと判断されて、延々と長く続くのである。
回避方法
こうすると、Ccは折り返されないが、Toは折り返されているのがわかる。
先にEncode側で折り返してるんだから、ToやらCCはmodifyしなくていいよ、と明示すりゃいいってことですかねえ。
さてはて。
そもそも、下の話がなぜ出てきたのか、ちうと。
http://cast-a-spell.at.webry.info/201005/article_5.html
以下のコードで、正しく折り返しされない。
#!/usr/bin/perl
use strict;
use warnings;
use utf8;
use Encode;
use MIME::Entity;
my $str = q{"abc あいう",aaaaaa ,bbbb ,ccccc ,dddddd ,eeeee ,};
my $t = Encode::encode('MIME-Header-ISO_2022_JP', $str);
my $e = MIME::Entity->build(
'Message-ID:' => '123456.test@localhost.com',
'To' => $t,
'Subject' => "aa",
'Data' => 'here');
print $e->stringify_header();
この原因だが、"abcとなっている箇所の閉じクォートがないため、Mail::Header.pmの_fold_lineメソッドで、ここは改行しちゃだめと判断されて、延々と長く続くのである。
回避方法
#!/usr/bin/perl
use strict;
use warnings;
use Encode;
use MIME::Entity;
use utf8;
my $str = q{"abc あいう",aaaaaa ,bbbb ,ccccc ,dddddd ,eeeee ,};
my $t = Encode::encode('MIME-Header-ISO_2022_JP', $str);
my $e = MIME::Entity->build(
'Message-ID:' => '123456.test@localhost.com',
'Cc' => $t,
'Subject' => "aa aaa aaaa aa aaa aaaa aa aaa aaaa aa aaa aaaa aa aaa aaaa aa aaa aaaa aa aaa aaaa aa aaa aaaa aa aaa aaaa aa aaa aaaa aa aaa aaaa aa aaa aaaa aa aaa aaaa aa aaa aaaa aa aaa aaaa aa aaa aaaa aa aaa aaaa aa aaa aaaa aa aaa aaaa aa aaa aaaa aa aaa aaaa aa aaa aaaa aa aaa aaaa aa aaa aaaa aa aaa aaaa aa aaa aaaa aa aaa aaaa ",
'Data' => 'here');
$e->head()->{mail_hdr_modify} = 0;
$e->head()->_insert('To', "To: $t", -1);
print $e->stringify_header();
こうすると、Ccは折り返されないが、Toは折り返されているのがわかる。
先にEncode側で折り返してるんだから、ToやらCCはmodifyしなくていいよ、と明示すりゃいいってことですかねえ。
さてはて。
この記事へのコメント
Sledge(MVCフレームワークの)ってどんな特徴があるんですか?
もし、よく知ってたらとりあげてください^^
ここの所、新規案件もないので色々挑戦すらできなしないという状態で(^-^;)
恥ずかしい限りなんですよ。
また今度走りましょーね♪