Reading the full email from GMail using JavaMail

后端 未结 5 472
日久生厌
日久生厌 2020-12-29 16:53

I am making use of javamail and I am having trouble getting the HTML from my gmail emails. I have the following:

Session session = Session.getDefaultInstance         


        
相关标签:
5条回答
  • 2020-12-29 17:01

    if you use java mail, you can use "multipart" and "bodypart" objects to go through the email message to extract the "text/plain" and "text/html" content, which are the content you want.

    0 讨论(0)
  • 2020-12-29 17:07

    The InputStream object contains the body of the email. You need to read the entirety of the stream to read the entire body of the message. For instance, this SO post details how to write an entire InputStream to an OutputStream such as System.out using an Apache library. That would be a good place to start as you could print the entire message body to the console. Otherwise, you'll need to use some buffers, etc, to pull the data out of the stream and put it into whatever you want to put it in. There is also this SO post that details, using the same library, how to convert an InputStream into a String.

    0 讨论(0)
  • 2020-12-29 17:22

    The issue is that the data you get is typically the raw data for a mime/multipart stream. You need to do something like this:

    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
          }
        }
      }
    }
    

    Good luck.

    0 讨论(0)
  • 2020-12-29 17:24

    You could use IOUtils of Apache Commons or can possibly even try something along the lines of :

    BufferedReader br = new BufferedReader(new InputStreamReader(daInputStream));
    String oneLine = "";
    while ( (oneLine = br.readLine()) !=  null )
        System.out.println(oneLine);
    
    0 讨论(0)
  • 2020-12-29 17:27

    your could try with the MimeMessage class:

    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();
        ...
    }
    
    0 讨论(0)
提交回复
热议问题