replaced vertical whitespace in Subject header with space

自作のScriptを動かしていたら、

replaced vertical whitespace in Subject header with space;
this will become fatal in a future version at XXXX.pl line XXX.

なんて警告メッセージが表示される。色々調べてみると原因は、 Email::MIME パッケージ。

メールは、古臭い時代の名残りもあって、メールヘッダ1行は、 「最悪でも1000文字程度(出展?)で、普通は 78 文字より長くは しないほうがいい」という規定。

使っているメールの文字は、40文字程度だけれども、Subject部は、 MIMEエンコードされるから、簡単に長くなる。

検証コードと結果

#!/usr/bin/perl
use Email::MIME ;
use Jcode ;

print Email::MIME->create(
   header => [
       From => 'foo@bar.com' ,
       To   => 'baz@bar.com' ,
       Subject => Jcode->new( "...(たっぷり)...")->mime_encode ,
   ] ,
   attributes => {
       content_type => 'text/html' ,
       charset      => 'ISO-2022-JP' ,
       encoding     => '7bit' ,
   } ,
   body => "あいうえおabcde" )->as_string ;

これを動かすと、

replaced vertical whitespace in Subject header with space;
this will become fatal in a future version at zz.pl line 5.
From: foo@bar.com
To: baz@bar.com
Subject: =?ISO-2022-JP?B?...?= =?ISO-2022-JP?B?...?=
Date: Sun, 2 Mar 2014 22:42:40 +0900
MIME-Version: 1.0
Content-Type: text/html; charset="ISO-2022-JP"
Content-Transfer-Encoding: 7bit

あ...de

といった結果となる。 本来なら、MIME-Encode された長い行は、vertical whitespace(\n)で 折り返される。しかし、space に置き換えられて、 きわめて長い1行となっている。

実際、Email::MIME には

改めて、Email::MIME には、以下のように書いてある。

Revision history for Perl extension Email::Simple
2.203  2014-02-14 21:56:14-05:00 America/New_York
       - translate vertical whitespace in headers
         into horizontal whitespace, with a warning

今まで警告メッセージが表示されていなかったのは、2/14更新だからか...

いいのか?

ということで、改行を空白に置き換えてもいいのかなぁ...メールは正しく送られてはいるんだけど...

postfix の場合は....
line_length_limit (デフォルト: 2048 bytes) ...
header_size_limit (デフォルト: 102400 bytes) ....
たしかに、今時のMTAは、そんなの正しく処理するようには思うけど...

ちなみに、 line-feed を vertical whitespace と呼ぶこともあるということを、初めて知った...
 

2017年2月

      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28        

ウェブページ

アーカイブ

Webデータ

このブログ記事について

このページは、T-Saitohが2014年3月 2日 22:54に書いたブログ記事です。

ひとつ前のブログ記事は「平日の@TohruSaitohのつぶやき(02/27)」です。

次のブログ記事は「Challenge Tablet」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。