雑記/2009-02-13

Ruby-1.9.1とnet/smtpと日本語メール bookmark

とてもハマりました。
日本語メールのencodingはISO-2022-JPでそれをnet/smtpに
渡すとUS-ASCIIじゃない!!って怒られるし・・・。

で、結果こういう感じでうまく送信できました。
force_encoding( "US-ASCII" )を追加するって事が正解で良いんでしょうか?
*下記はSubjectとかのBASE64エンコード処理は考慮していません。

  1. require 'net/smtp'
  2.  
  3. Net::SMTP.start( SMTPサーバ , 25 ) { |smtp|
  4.   body =  "From:  hoge@hogehoge\r\n";
  5.   body << "To: ken@anys.ne.jp\r\n";
  6.   body << "Subject: test mail\r\n";
  7.   body << "MIME-Version: 1.0\r\n";
  8.   body << "Content-Type: text/plain; charset=ISO-2022-JP;\r\n";
  9.   body << "\r\n";
  10.   body << "テストメール\r\n";
  11.   smtp.send_message( body.encode( "ISO-2022-JP" ).force_encoding( "US-ASCII" ) , 'ken@xyz.atc.ntt-at.co.jp', 'ken@anys.ne.jp');
  12. }

*ついでにjudgement-2.0.0をruby-1.9.1で動かすための
 パッチもアップしました。

 

テゴリ: 雑記 プログラム