[英]ArrayOutOfBoundException while reading an email through gmail using javamail
[英]Reading the full email from GMail using JavaMail
我正在使用javamail,我無法從我的Gmail電子郵件中獲取HTML。 我有以下內容:
Session session = Session.getDefaultInstance(props, null);
Store store = session.getStore("imaps");
store.connect("imap.gmail.com", "myemail@gmail.com", "password");
System.out.println(store);
Folder inbox = store.getFolder("Inbox");
inbox.open(Folder.READ_ONLY);
Message messages[] = inbox.getMessages();
for(Message message:messages) {
System.out.println(message); // com.sun.mail.imap.IMAPInputStream@cec0c5
以上一切正常,但我無法打印或獲取實際的HTML或文本電子郵件。 我只是得到某種InputStream,我如何輕松處理這個以獲取電子郵件的原始HTML?
我也試過循環閱讀消息,但這並沒有讓我走得太遠:
Message message[] = inbox.getMessages();
for (int i=0, n=message.length; i<n; i++) {
System.out.println(i + ": " + message[i].getFrom()[0]
+ "\t" + message[i].getSubject());
String content = message[i].getContent().toString();
if (content.length() > 200)
content = content.substring(0, 600);
System.out.print(content);
}
非常感謝所有的hlep。
問題是您獲得的數據通常是mime / multipart流的原始數據。 你需要做這樣的事情:
for(Message message:messages) {
if(javax.mail.Multipart.class.isInstance(message)){
Multipart parts = (Multipart)msg.getContent(), innerPart;
int i;
for(i=0;i<parts.getCount();i++){
javax.mail.BodyPart p = parts.getBodyPart(i);
if("text/html".equals(p.getContentType())){
// now you can read out the contents from p.getContent()
// (which is typically an InputStream, but depending on your javamail
// libraries may be something else
}
}
}
}
祝好運。
您可以使用Apache Commons的IOUtils,甚至可以嘗試以下方面的內容:
BufferedReader br = new BufferedReader(new InputStreamReader(daInputStream));
String oneLine = "";
while ( (oneLine = br.readLine()) != null )
System.out.println(oneLine);
如果你使用java郵件,你可以使用“multipart”和“bodypart”對象來瀏覽電子郵件消息,以提取“text / plain”和“text / html”內容,這些內容就是你想要的內容。
你可以嘗試使用MimeMessage類:
Session session = Session.getDefaultInstance(props, null);
Store store = session.getStore("imaps");
store.connect("imap.gmail.com", "myemail@gmail.com", "password");
Folder inbox = store.getFolder("Inbox");
inbox.open(Folder.READ_ONLY);
Message messages[] = inbox.getMessages();
for(Message message:messages) {
MimeMessage im = new MimeMessage(session, message.getContent());
im.getFrom();
im.getMessageID();
...
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.