在 JavaMail 中获取 html 电子邮件内容
Posted
技术标签:
【中文标题】在 JavaMail 中获取 html 电子邮件内容【英文标题】:Getting html Email Content in JavaMail 【发布时间】:2013-04-05 22:21:55 【问题描述】:我使用 JavaMail API 为我的 android 手机制作了一个电子邮件客户端。如果它是 html 邮件,我不知道如何获取电子邮件内容。我正在使用以下代码来获取内容:
public void printMessage(int messageNo) throws Exception
Log.i("MsgNo", "Getting message number: " + messageNo);
Message m = null;
try
m = folder.getMessage(messageNo);
dumpPart(m);
catch (IndexOutOfBoundsException iex)
Log.i("Out of Range","Message number out of range");
public static void dumpPart(Part p) throws Exception
if (p instanceof Message)
dumpEnvelope((Message)p);
Object content = p.getContent();
Log.i("dumpPart",(String) content);
String ct = p.getContentType();
try
pr("CONTENT-TYPE: " + (new ContentType(ct)).toString());
Log.i("MsgNo", "Content Type");
catch (ParseException pex)
pr("BAD CONTENT-TYPE: " + ct);
Log.i("MsgNo", "Bad Content Type");
//* Using isMimeType to determine the content type avoids
// * fetching the actual content data until we need it.
if (p.isMimeType("text/plain"))
pr("This is plain text");
pr("---------------------------");
Log.i("Text", (String)p.getContent());
else
Log.i("MsgNo", "Just a Separator");
// just a separator
pr("---------------------------");
在 Logcat 中,我得到了 dumpenvelope((Message)p); 的返回值,但之后什么都没有。
有人知道该怎么做吗?
【问题讨论】:
【参考方案1】:有没有抛出异常?
您是否enable debugging 并检查了协议跟踪以查看可能失败的原因?
你在使用 IMAP 吗?
看起来您的程序是由名为 msgshow.java 的 JavaMail 示例程序的片段创建的,您找到完整的原始示例程序了吗?
This JavaMail FAQ entry 可能也会有所帮助。
【讨论】:
不,没有抛出异常,如果我使用示例程序 msgshow,我会得到每个返回值,直到“这是纯文本 --------------- ------",但 (String)p.getContent() 什么也不返回。为了测试,我在 (String)p.getContent() 之后做了一个简单的 Log.i 调用,但我在 LogCat 中没有得到这个,所以我认为 (String)p.getContent() 是问题所在。我正在使用 POP3,我必须使用 Imap 吗? 协议跟踪将有助于调试它。使用 POP3,您必须等待整个邮件下载完成,然后才能访问任何内容。如果消息很大,则可能需要很长时间。您可以尝试设置超时,以防在与服务器通信时出现问题。而且,除非您有充分的理由不使用 IMAP,否则我建议您改用 IMAP。 好的,现在我正在使用 IMAP,但我没有收到消息内容。如果我尝试使用您可以在每个论坛中找到的 MimeMessage 的可能性,我只会从功能中获得数据垃圾作为内容...... 协议跟踪显示了什么,您的代码目前是什么样的?您是否尝试过将所有内容包装在 try/catch(Exception) 中以确保不会引发意外异常? 好的,我犯了一个错误,抛出了一个异常,但我没有看到它。如果我从我的应用程序中的 msgshow 演示文件运行 dumpPart Methode,我会收到此异常:java.lang.ClassCastException: com.sun.mail.util.QPDecoderStream cannot be cast to java.lang.String以上是关于在 JavaMail 中获取 html 电子邮件内容的主要内容,如果未能解决你的问题,请参考以下文章
javamail: UrlDataSource获取网络文件作为邮件的附件|javamail发送二进制流附件的问题