JavaMail APIを使用してmimeメッセージを解析しようとしています。調査を行いましたが、見つけた手順がうまくいきません。そのうちの1つは、ここで回答されたものです 。Java電子メールメッセージパーサー?
ByteArrayInputStreamが解析しようとしているコンテンツから取得されたため、InputStreamを渡して実行しています。これを行うと、message.getContentによって空の文字列が生成されます。
ところで、私はScalaを使用しています。
JavaMail APIを使用してmimeメッセージを解析しようとしています。調査を行いましたが、見つけた手順がうまくいきません。そのうちの1つは、ここで回答されたものです 。Java電子メールメッセージパーサー?
ByteArrayInputStreamが解析しようとしているコンテンツから取得されたため、InputStreamを渡して実行しています。これを行うと、message.getContentによって空の文字列が生成されます。
ところで、私はScalaを使用しています。
私は最近この問題を抱えていたので、あなたの研究はそれほど良くなかったはずです. 私が最近と言ったとき、私はここ数日を意味します!:P
しかし、これは私が電子メールを読むために行ったことです (または、少なくとも電子メールをある程度読んでいます。JEditorPane では常にきれいであるとは限らない HTML テキストの大きなチャンクが返されます)。
private void tableMouseReleased(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_tableMouseReleased
final java.awt.event.MouseEvent e = evt;
Thread t = new Thread(new Runnable() {
@Override
public void run() {
if(table.getRowCount() == 0 || message == null || message.length == 0) {
// Do nothing
} else {
try {
int row = table.rowAtPoint(e.getPoint());
String subject = message[row].getSubject();
String from = InternetAddress.toString(message[row].getFrom());
StringBuilder body = new StringBuilder();
Multipart mp = (Multipart) message[row].getContent();
for(int i = 0; i < mp.getCount(); i++) {
BodyPart bp = mp.getBodyPart(i);
String disp = bp.getDisposition();
if(disp != null && (disp.equals(BodyPart.ATTACHMENT))) {
// Do something
} else {
body.append(bp.getContent());
}
}
EmailContent ec = new EmailContent(new JFrame(),true,from,subject,"<html>" + body.toString());
} catch (IOException ex) {
Logger.getLogger(MailPanel.class.getName()).log(Level.SEVERE, null, ex);
} catch (MessagingException ex) {
Logger.getLogger(MailPanel.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
});
t.start();
}
テーブルにメッセージを入力する必要がありましたが、テーブル内のメッセージをクリックすると、そのメッセージが含まれた新しいウィンドウが表示されました。メッセージ配列は、Message オブジェクトで満たされた単なる配列です。したがって、これを行うには明らかにメッセージが必要です。しかし、あなたが求めている部分はこれです:
StringBuilder body = new StringBuilder();
Multipart mp = (Multipart) message[row].getContent();
for(int i = 0; i < mp.getCount(); i++) {
BodyPart bp = mp.getBodyPart(i);
String disp = bp.getDisposition();
if(disp != null && (disp.equals(BodyPart.ATTACHMENT))) {
// Do something
} else {
body.append(bp.getContent());
}
}
うまくいくはずなので、何が問題なのかを理解するために、あなたが何をしているのかについての詳細が必要です.
まず、問題がコードにあるのではなく、メール メッセージの形式が正しいことを確認しましょう。メッセージを表示するには、JavaMail に付属の msgshow.java デモ プログラムを使用します。-m オプションを使用して、MIME メッセージを含むファイルから stdin をリダイレクトします。それは何を表示しますか?
正しく動作する場合は、メッセージを読むために使用しているコードを表示してください。