我正在开发这样一款能够正确发送电子邮件的应用。 但在获取电子邮件期间我得到了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);
}
}
}
答案 0 :(得分:2)
这取决于发件人,您将收到他发送的任何内容。正如比尔建议的那样,你会在信息正文中找到不同类型的MimeTypes
但是,如果您确定收到HTML
,则可以使用JSoup库轻松将其转换为plain text
。如果不确定,首先必须从MultiPart对象中提取HTML,然后将其转换为纯文本。
示例:
Document doc = Jsoup.parse(HTMLText);
String plainText = doc.body().text();
System.out.println(plainText);
答案 1 :(得分:0)
您可以获得发件人发送给您的内容。如果他们只发送了你的HTML,你只能获得HTML。在许多情况下,他们会向您发送包含纯文本和html版本中相同内容的多部分/替代消息。这个JavaMail FAQ entry将帮助您入门。
但是,该消息只包含html内容而你想要纯文本,你将不得不自己处理html内容并尝试将其转换为纯文本。根据你想做的工作有多好,这要么相对容易,要么非常困难。