{"id":915,"date":"2011-03-26T22:05:50","date_gmt":"2011-03-26T20:05:50","guid":{"rendered":"http:\/\/www.tutego.de\/blog\/javainsel\/2011\/03\/die-javamail-api-teil-2\/"},"modified":"2011-03-26T22:05:50","modified_gmt":"2011-03-26T20:05:50","slug":"die-javamail-api-teil-2","status":"publish","type":"post","link":"https:\/\/www.tutego.de\/blog\/javainsel\/2011\/03\/die-javamail-api-teil-2\/","title":{"rendered":"Die JavaMail API (Teil 2)"},"content":{"rendered":"<p>Steht die Verbindung zum Server, kann der Client eine Mailbox \u00f6ffnen. Wir deklarieren dazu eine openPop3InboxReadOnly() und closeInbox() Methode.<\/p>\n<p>com\/tutego\/insel\/mail\/MailUtils.java, Teil 2<\/p>\n<p>public static Folder openPop3InboxReadOnly( Session session )<\/p>\n<p>throws MessagingException<\/p>\n<p>{<\/p>\n<p>Store store = session.getStore( &quot;pop3&quot; );<\/p>\n<p>store.connect();<\/p>\n<p>Folder folder = store.getFolder( &quot;INBOX&quot; );<\/p>\n<p>folder.open( Folder.READ_ONLY );<\/p>\n<p>return folder;<\/p>\n<p>}<\/p>\n<p>public static void closeInbox( Folder folder ) throws MessagingException<\/p>\n<p>{<\/p>\n<p>folder.close( false );<\/p>\n<p>folder.getStore().close();<\/p>\n<p>}<\/p>\n<p>Die R\u00fcckgabe von openPop3InboxRealOnly() ist ein Folder-Objekt und mit diesem lassen sich letztendlich die E-Mails abrufen:<\/p>\n<p>com\/tutego\/insel\/mail\/MailUtils.java, Teil 3<\/p>\n<p>public static void printAllTextPlainMessages( Folder folder )<\/p>\n<p>throws MessagingException, IOException<\/p>\n<p>{<\/p>\n<p>for ( Message m : folder.getMessages() )<\/p>\n<p>{<\/p>\n<p>System.out.println( &quot;\\nNachricht:&quot; );<\/p>\n<p>System.out.println( &quot;Von: &quot; + Arrays.toString(m.getFrom()) );<\/p>\n<p>System.out.println( &quot;Betreff: &quot; + m.getSubject() );<\/p>\n<p>System.out.println( &quot;Gesendet am: &quot; + m.getSentDate() );<\/p>\n<p>System.out.println( &quot;Content-Type: &quot; +<\/p>\n<p>new ContentType( m.getContentType() ) );<\/p>\n<p>if ( m.isMimeType( &quot;text\/plain&quot; ) )<\/p>\n<p>System.out.println( m.getContent() );<\/p>\n<p>}<\/p>\n<p>}<\/p>\n<p>Die Implementierung holt sich mit getContent() den kompletten Inhalt, aber nat\u00fcrlich l\u00e4sst sich der auch \u00fcber einen Eingabestrom holen.<\/p>\n<p>Ein kleines Demo dazu, was erst Verbindung mit dem Google Mail Server herstellt, dann sich den INPUT-Ordner \u00f6ffnet und alle E-Mails abl\u00e4uft. Die Nachrichten werden nicht vom Server gel\u00f6scht.<\/p>\n<p>com\/tutego\/insel\/mail\/PrintAllMailsWithMailUtils.java, main()<\/p>\n<p>Session session = MailUtils.getGMailSession(<\/p>\n<p>JOptionPane.showInputDialog( &quot;user&quot; ),<\/p>\n<p>JOptionPane.showInputDialog( &quot;pass&quot; ) );<\/p>\n<p>Folder inbox = MailUtils.openPop3InboxReadOnly( session );<\/p>\n<p>MailUtils.printAllTextPlainMessages( inbox );<\/p>\n<p>MailUtils.closeInbox( inbox );<\/p>\n<p>Das Programm \u00f6ffnet zwei Dialoge, einen f\u00fcr den Benutzernamen und einen f\u00fcr das Passwort, es ist jedem selbst \u00fcberlassen, hier feste Strings einzukodieren.   <\/p>\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td valign=\"top\" width=\"655\">\n<p>Hinweis<\/p>\n<p>Um herauszufinden, ob \u00fcberhaupt Nachrichten auf dem Server vorliegen, k\u00f6nnen wir auf dem aktuellen folder-Objekt die Methode getMessageCount() nutzen.<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><strong>Nachricht l\u00f6schen<\/strong><\/p>\n<p>Um eine Nachricht vom Server zu l\u00f6schen, darf der Ordner nicht mit READ_ONLY ge\u00f6ffnet werden, sondern mit Folder.READ_WRITE. Anschlie\u00dfend l\u00e4sst sich einer Nachricht, repr\u00e4sentiert durch ein Message-Objekt, mit setFlag() ein L\u00f6sch-Hinweis geben:<\/p>\n<p>message.setFlag( Flags.Flag.DELETED, true );<\/p>\n<p>Die Daten werden jedoch nur dann vom Server gel\u00f6scht, wenn zum Schluss folder.close(true) aufgerufen wird. Ohne den Aufruf von close() mit dem Argument true bleiben die Nachrichten erhalten.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Steht die Verbindung zum Server, kann der Client eine Mailbox \u00f6ffnen. Wir deklarieren dazu eine openPop3InboxReadOnly() und closeInbox() Methode. com\/tutego\/insel\/mail\/MailUtils.java, Teil 2 public static Folder openPop3InboxReadOnly( Session session ) throws MessagingException { Store store = session.getStore( &quot;pop3&quot; ); store.connect(); Folder folder = store.getFolder( &quot;INBOX&quot; ); folder.open( Folder.READ_ONLY ); return folder; } public static void closeInbox( [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":"","_links_to":"","_links_to_target":""},"categories":[1],"tags":[],"class_list":["post-915","post","type-post","status-publish","format-standard","hentry","category-allgemein"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/915","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/comments?post=915"}],"version-history":[{"count":0,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/915\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/media?parent=915"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/categories?post=915"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/tags?post=915"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}