« WebObjects:Javaソースコードに日本語を埋め込む | トップページ | Javadocで日本語APIリファレンスを作る »

WebObjects:WOMailDeliveryで日本語メール送信

【問題】
WOMailDeliveryは,WebObjectsのフレームワークに含まれるメール送信クラスです。
WOMailDeliveryクラスには文字コード変換の機能が含まれておらず,送信するメール本文の日本語文字列をISO-2022-JPに変換することができません。そのため,メールの本文が日本語だと文字化けして送信されてしまいます。

【対応策】
WOMailDeliveryのメール送信クラスにメール本文を渡す前に,JavaStringクラスのテキストエンコーディング機能を使ってメール本文を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");
あとはこのsendMessageをWOMailDeliveryのメール送信メソッド(WOMailDelivery.sharedInstance().composePlainTextEmail())に渡せばOKです。

■追記
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]

にほんブログ村 IT技術ブログへ にほんブログ村 IT技術ブログ プログラム・プログラマへ 人気ブログランキングへ ←この記事が役に立ったという方はクリックお願いします。


|

« WebObjects:Javaソースコードに日本語を埋め込む | トップページ | Javadocで日本語APIリファレンスを作る »

プログラミング」カテゴリの記事

WebObjects」カテゴリの記事

トラックバック


この記事へのトラックバック一覧です: WebObjects:WOMailDeliveryで日本語メール送信:

« WebObjects:Javaソースコードに日本語を埋め込む | トップページ | Javadocで日本語APIリファレンスを作る »