Ticket #25615

タイトルが長いメールを送信すると問題がある。

Open Date: 2011-07-03 11:46 Last Update: 2012-09-02 16:03

Reporter:
Owner:
Type:
Status:
Closed
Component:
MileStone:
(None)
Priority:
1 - Lowest
Severity:
1 - Lowest
Resolution:
Fixed
File:
None

Details

MailProcessor を利用し、タイトルが長いメールを送信し、Windows Live メールで受信したところタイトルを正常に認識できなかった。

Ticket History (3/4 Histories)

2011-07-03 11:46 Updated by: toy_dev
  • New Ticket "タイトルが長いメールを送信すると問題がある。" created
2011-07-20 20:17 Updated by: toy_dev
  • Resolution Update from None to Later
  • Priority Update from 5 - Medium to 1 - Lowest
  • Severity Update from 5 - Medium to 1 - Lowest
Comment

本システムは長いタイトルのメールを送信することが現状無い。そのため対応優先度を下げる。必要に応じて対応する。

2012-09-02 16:03 Updated by: toy_dev
  • Resolution Update from Later to Fixed
Comment

ヘッダー名である "Subject: " や文末改行、行頭空白文字などを含めて Base64 でエンコードした1行の文字列の長さが 78 バイト未満になるよう調整する以下のような実装を行った。

1. Subject: 付き Base64 エンコード文字列の長さが 78 バイト未満だったらそのままその文字列をタイトルとする。 2. 上記条件を満たさなかった場合、以下を繰り返し行い複数行としてタイトルを構成する。 3. タイトルを1文字ずつ切り出して Base64 エンコードし 76 バイトを超えたら、超える前の文字列をタイトル文字列として採用し、76 バイトを超えた部分に関しては再度同じ処理を繰り返していく。 3.1. 新しい行を作る際は、前行の文末に \n を入れる。 3.2. 新しい行の行頭に空白文字を1文字入れる。

3. の1文字ずつ切り出すという処理に String#each_char を使っている。 Ruby 1.9 では M17N の対応がしっかりできているため正常に「1文字」の判断がなされる。 しかし、Ruby 1.8 では正常に「1文字」の判断がされるとは限らず、中途半端なバイト位置で区切られてしまう可能性が考えられるため、完全な保証ができるものではない。

2012-09-02 16:03 Updated by: toy_dev
  • Ticket Close date is changed to 2012-09-02 16:03
  • Status Update from Open to Closed
Comment

Ruby 1.8 系の完全な対応は難しく、またそれほど重要ではないため、本チケットはこれでクローズとする。

Attachment File List

No attachments

Edit

You are not logged in. I you are not logged in, your comment will be treated as an anonymous post. » Login