- PR -

受信メールをローカルディスクに保存

1
投稿者投稿内容
どんたくお
ベテラン
会議室デビュー日: 2005/08/29
投稿数: 88
投稿日時: 2005-11-25 16:25
みなさん、こんにちは。

現在、JavaMailを使用して以下のようなアプリケーションを作成しております。

概要
POP3で、メールを受信し、ローカルディスク上に保存する。
保存した、メールを読み込み、画面上にFROMと件名と本文を表示する。
以上のようなものです。

POP3でメールを受信し、MimeUtilityを使用し、画面上に表示させることはできました。
しかし、一旦メールをローカルのディスクに保存し、その後別のアプリケーションからそのメールを呼び出す必要があり、躓いてしまいました。

POP3で読み込んだときに、MimeUtilityで整形しテキストファイルとして保存する形式ではなく、POP3で読んで保存したメールを、別アプリケーションから再度読み込み処理する必要があります。


JavaMailでPOP3より読み込んだメールを、そのままローカルディスクに保存する方法をご存知の方がおいでましたら、ご教授いただけると幸いです。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2005-11-25 16:54
すでにメールの受信はできているとのことですので、JavaMailとは関係なくファイル出力の方法が分からないと言うことでしょうか?

"メールを受信してファイルに出力する"というAPIは恐らくありませんので、"メールを受信"と"ファイルへ出力"という2つの処理を自分で書く必要があります。
まずは単純な String のリテラルをファイルへ出力するプログラムを書いてみましょう。
どんたくお
ベテラン
会議室デビュー日: 2005/08/29
投稿数: 88
投稿日時: 2005-11-25 17:33
インギさん、ご返信いただきましてありがとうございます。

> すでにメールの受信はできているとのことですので、JavaMailとは関係なくファイル出力の方法が分からないと言うことでしょうか?
舌足りずで大変申し訳ございませんでした。m(_|_)m

ファイルの出力に関しては、当方実装したことがあります。
やりたいこととしまして、MIME形式(言葉が違うかもしれません)でローカルディスクに保存したいと思っております。
JavaMailを使用して以下のコーディングを行い、メールサーバより受信しました。


folder = store.getFolder("INBOX");
folder.open(Folder.READ_ONLY);
Message[] messages = folder.getMessages();


こうすると、message型の配列にメールの一覧が受信されます。
あとは、MimeUtilityなどを使用して件名や本文を取り出せるのですが、受信したMIME形式のメールをファイルに保存したかったのです。

Message#getInputStream()
を使用すると、本文は取得できるようなのですが、宛先とかのその他の情報(宛先など)が取得できないようでした。


よろしくお願いします。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2005-11-25 17:48
MimeMessage#writeTo() とかどうでしょう?
http://java.sun.com/j2ee/sdk_1.3/techdocs/api/javax/mail/internet/MimeMessage.html#writeTo(java.io.OutputStream)
どんたくお
ベテラン
会議室デビュー日: 2005/08/29
投稿数: 88
投稿日時: 2005-11-25 18:16
インギさん、ありがとうございます。

> MimeMessage#writeTo() とかどうでしょう?
大変ありがとうございます。m(_|_)m
これにて、メッセージの保存ができました。


あと、別スレッドの方が良いかもしれませんが、
JAVAにはperlでいう
MIME::Parser
のようなライブラリはないのですかね。

今回、インギさんにご教授いただいた
MimeMessage#writeTo()
で、外部ファイルに書き出しましたが、これを復元というか、Mimeエンコードした形で、また別のアプリケーションから使用したいと考えております。
できれば、
javax.mail.Message
にしたいのですが、こちら少々眺めてみたのですが、単純にテキストファイルを渡して云々というようにはいかないようですね。

もし、こちらについても、ご存知でしたらご教授いただけるとうれしいです。


よろしくお願いします。
1

スキルアップ/キャリアアップ(JOB@IT)