WebObjects:WOMailDeliveryで日本語メール送信
【問題】
WOMailDeliveryは,WebObjectsのフレームワークに含まれるメール送信クラスです。
WOMailDeliveryクラスには文字コード変換の機能が含まれておらず,送信するメール本文の日本語文字列をISO-2022-JPに変換することができません。そのため,メールの本文が日本語だと文字化けして送信されてしまいます。
【対応策】
WOMailDeliveryのメール送信クラスにメール本文を渡す前に,JavaのStringクラスのテキストエンコーディング機能を使ってメール本文をISO-2022-JPに変換し,変換結果を格納したStringクラスのインスタンスを作ってこれをWOMailDeliveryのメール送信クラスに渡すことで,日本語メールを送ることができます。
日本語の本文が入ったStringからISO-2022-JPに文字コード変換したStringを作るには以下のようにします:
String message = new String("こんにちは。\n"); // メール本文. // 本文をISO-2022-JPに文字コード変換したバイト列にする. byte[] bytes = message.getBytes("ISO2022JP"); // バイト列でStringクラスインスタンスを作る. // ISO-8859-1は「北米ラテン文字」で,ISO-2022-JPのバイト列を変換せずに取り込むために指定. String sendMessage = new String(bytes, "ISO8859_1"); |
■追記
WOMailDeliveryは,指定されたメールサーバ(MTA)のポート25番にSASL認証なしでメールを送信しようとします。そのため,昨今のスパム対策などによりWOMailDeliveryが利用できない場合があります。そのような場合はJavaMailが使えます。(JavaMailによるメール送信の実装例はこちら)
■関連情報
WOMailDeliveryの基本的な使い方:Sending E-mail from a WebObjects Application
ISO8859-1(Wikipedia)
WebObjects:[日本語技術マニュアル][API Reference(javadoc)][ADC Tools][サポート][製品紹介]
■関連書籍をAmazonで検索:[WebObjects 和書 洋書]
●メール送信システムの作り方大全―Perl/PHP/JavaMail/Windowsそれぞれの場合
■Apple Store:Windows/Solaris版[WebObjects 5.2]
| 固定リンク
「プログラミング」カテゴリの記事
- シェルスクリプト:「.svn」ディレクトリを一括削除する(2015.03.23)
- JavaScript:excanvasを使ってWebページに画像を表示する(2012.05.07)
- C言語:TRUEとFALSEの値(2012.05.06)
- Java:CSVパーサを作る(その3) - RFC4180対応 後編(2008.06.13)
- Java:CSVパーサを作る(その2) - RFC4180対応 前編(2008.06.12)
「WebObjects」カテゴリの記事
- WebObjects:CSVレスポンスの実装(2008.03.16)
- WebObjects:メモリ不足エラー対応(2008.02.11)
- WebObjects:MySQLのためのEOModelの設定(2008.02.01)
- WebObjects:日本語の基本(2008.01.26)
- WebObjects:WOMailDeliveryで日本語メール送信(2008.01.23)