1

私はメールを適切に送信するようなアプリを開発しています。しかし、電子メールをフェッチしている間、私はhtmlコード化されたメッセージ本文を取得しています。しかし、プレーンテキストタイプのメッセージ本文が必要です。だから私に指示してください。

メールを受信するための私のコードは次のとおりです。

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Properties;

import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.NoSuchProviderException;
import javax.mail.Session;
import javax.mail.Store;



public class InboxReader {

    public static void main(String args[]) throws Exception {
        Properties props = System.getProperties();
        props.setProperty("mail.store.protocol", "imaps");
            try {
                Session session = Session.getDefaultInstance(props, null);
                Store store = session.getStore("imaps");
                store.connect("imap.gmail.com", "emailId@gmail.com", "password");
                System.out.println(store);

                Folder inbox = store.getFolder("Inbox");
                inbox.open(Folder.READ_WRITE);



                BufferedReader reader = new BufferedReader (
                        new InputStreamReader(System.in));
                        // Get directory

                        Message message[] = inbox.getMessages();


                        //Message message[] = folder.getMessages();
                        for (int i=0, n=message.length; i<n; i++) 
                        {
                        System.out.println(i + ": " + message[i].getFrom()[0]
                        + "\t" + message[i].getSubject());

                        System.out.println("Do you want to read message? " +
                        "[YES to read/QUIT to end]");
                        String line = reader.readLine();
                        if ("YES".equals(line)) {
                        message[i].writeTo(System.out);
                        } else if ("QUIT".equals(line)) {
                        break;
                        }
                        }
                        }
         catch (NoSuchProviderException e) {
            e.printStackTrace();
            System.exit(1);
        } catch (MessagingException e) {
            e.printStackTrace();
            System.exit(2);
        }
    }
 }
4

2 に答える 2

3

送信者によって異なりますが、彼が送信したものは何でも受信します。MimeTypesビルが提案したように、メッセージ本文で取得するさまざまなタイプを探してください。
ただし、確実に を受け取る場合は、JSoup ライブラリを使用しHTMLて簡単に変換できます。plain textよくわからない場合は、まず MultiPart オブジェクトから HTML を抽出し、それをプレーン テキストに変換する必要があります。

例:

Document doc = Jsoup.parse(HTMLText);

String plainText = doc.body().text();

System.out.println(plainText);  
于 2013-01-07T06:44:19.770 に答える
0

送信者が送信したものを受け取ります。彼らがあなたに html だけを送信した場合、あなたは html だけを受け取ります。多くの場合、彼らはプレーン テキストと HTML バージョンの両方で同じコンテンツを含むマルチパート/代替メッセージを送信します。このJavaMail の FAQ エントリから始めることができます。

ただし、メッセージに HTML コンテンツしか含まれておらず、プレーン テキストが必要な場合は、HTML コンテンツを自分で処理してプレーン テキストに変換する必要があります。やりたい仕事の程度に応じて、これは比較的簡単な場合もあれば、非常に難しい場合もあります。

于 2013-01-06T09:55:42.480 に答える