Как читать переадресованную почту, используя javamail в java? - PullRequest
0 голосов
/ 19 сентября 2019

Я хочу прочитать все содержимое тела gmail, такое как содержимое сообщения, привязки и, если есть переадресованная почта, я хочу ее прочитать.Как я могу сделать это с помощью Java?

Вот мой ReadMail.java: -

public class ReadMail {

    public static void main(String[] args) throws MessagingException {

        System.setProperty("https.protocols", "TLSv1,TLSv1.1,TLSv1.2");
        Session session = Session.getDefaultInstance(new Properties( ));
        Store store = session.getStore("imaps");
        store.connect("imap.googlemail.com", 993, "username", "password");
        Folder inbox = store.getFolder( "INBOX" );
        inbox.open( Folder.READ_WRITE );
        System.out.println("Coming here");
        int count = inbox.getMessageCount();
        System.out.println("Count : "+count);
        Message[] messages = inbox.search(
            new FlagTerm(new Flags(Flags.Flag.SEEN), true));


        for ( Message message : messages ) 
        {
            MimeMessage m = (MimeMessage) inbox.getMessage(count);
            System.out.println("Message Number : "+message.getMessageNumber());
            System.out.println(m.getMessageID());
            Enumeration headers = message.getAllHeaders();
            while (headers.hasMoreElements()) {
              Header h = (Header) headers.nextElement();
              System.out.println(h.getName() + ": " + h.getValue());
            }

           Address[] recipients = message.getAllRecipients();

           for(int i=0; i<recipients.length; i++)
           {
               System.out.println(recipients[i]);
           }

          System.out.println("sendDate: " + message.getSentDate());          
          System.out.println("from : "+ message.getFrom()[0]);
          System.out.println(" subject:" + message.getSubject()); 
          try {
            System.out.println("Message :"+ message.getContent());
        } catch (IOException e) {
            e.printStackTrace();
        }

          inbox.setFlags(messages, new Flags(Flags.Flag.SEEN), true);
        }
    }
}

1 Ответ

0 голосов
/ 19 сентября 2019

См. JavaMail FAQ для получения дополнительной информации о двух способах пересылки сообщений.

Если сообщение пересылается как вложение, содержимое пересылаемого сообщения может быть легкочитать, получая содержимое вложения и передавая его в объект сообщения.

Если сообщение пересылается в строке, вам нужно проанализировать тело сообщения, используя какую-то эвристику, чтобы определить, какая часть сообщениятело - это перенаправленное сообщение.

...