BLANTERORBITv102

    Cara Mengambil Kotak Masuk Pesan Gmail di Java Swing

    Kamis, 12 Oktober 2017

    Pembuka

    Selain untuk mengirim email, JavaMail memiliki banyak kegunaan. Dalam tutorial Cara Mengambil Kotak Masuk Pesan Gmail di Java Swing ini, saya akan memberikan contoh kode progam java yang mengambil kotak masuk/ pesan masuk dari layanan email google. Namun saya hanya memberikan sedikit contoh dalam pengimplementasiannya pada java saja, untuk ke tahap advanced kita dapat berdiskusi melalui kolom komentar.

    Pembahasan

    Seperti tutorial sebelumnya mengenai Cara Mengirim Email Menggunakan Java Swing, kita akan menyatukan program tersebut dengan program inbox. Buat jFrame baru pada package yang sama dengan nama jFrame adalah DashboardMail ,lalu buatlah sebuah interface dengan keinginan anda, atau lihat gambar dibawah ini.
    Cara Mengambil Kotak Masuk Pesan Gmail di Java Swing 1
    Gambar 1
    Adapun komponen dan keterangan komponen yang digunakan dapat dilihat pada tabel dibawah.
    KomponenTextVariableFungsi
    jFrame - - Merupakan form utama dari aplikasi
    jPanel - fullPanel, otherPanel dan tablePanel fullPanel komponen kontainer utuk menampung seluruh komponen kontrol dan kontainer, otherPanel untuk menampung jButton dan jLabel, dan tablePane untuk menampung komponen jTable.
    jButton Inbox dan Send btn_inbox dan btn_kirim btn_inbox digunakan untuk fungsi pemanggilan cek inbox pada email dan btn_kirim untuk memanggil jFrame pada JavaScMailer.java
    jLabel Java-Sc Tutorial Email jLabel1 -
    jButton Kirim dan Bersihkan btn_kirim dan btn_bersihkan Tombol untuk mengirim dan tombol bersihkan seluruh form
    jTable - tableInbox Untuk menampung data kotak masuk pesan pada email.
    Selanjutnya setelah seluruh design interface selesai dengan penamaan variabel pada komponen juga telah selesai, pindah ke bagian Source pada netbeans. Cari baris kode program berikut tepat pada bagian atas setelah nama Class,
        public DashboardMail() {
         initComponents();
        }
    Selanjutnya buatlah method baru dengan nama method cekInbox(), kemudian ketikan kode program berikut.id
        public void cekInbox(){
          String host = "pop.gmail.com";
          String user = "emailgmailkamu@gmail.com";
          String password = "passwordgmailkamu";
          
            try {
             Properties properties = new Properties();
    
             properties.put("mail.pop3.host", host);
             properties.put("mail.pop3.port", "995");
             properties.put("mail.pop3.starttls.enable", "true");
             Session emailSession = Session.getDefaultInstance(properties);
    
             Store store = emailSession.getStore("pop3s");
             store.connect(host, user, password);
             //mengambil folder inbox pada email
             Folder emailFolder = store.getFolder("INBOX");
             emailFolder.open(Folder.READ_ONLY);
             //baca kotak masuk
             Message[] messages = emailFolder.getMessages();
             System.out.println("messages.length---" + messages.length);
             //mengambil seluruh daftar kotak masuk
             for (int i = 0, n = messages.length; i < n; i++) {
                 //menyimpan pesan masuk pada array
                 Message message = messages[i];
                 DefaultTableModel model = (DefaultTableModel) tableInbox.getModel();
                 List daftarInbox = new ArrayList<>();
                 tableInbox.setAutoCreateColumnsFromModel(true);
                 daftarInbox.add(i+1);
                 daftarInbox.add(message.getFrom()[0]);
                 daftarInbox.add(message.getSubject());
                 //menampilkan array pada tabel
                 model.addRow(daftarInbox.toArray());
             }
            emailFolder.close(false);
            store.close();
    
            } catch (NoSuchProviderException e) {
               e.printStackTrace();
            } catch (MessagingException e) {
               e.printStackTrace();
            } catch (Exception e) {
               e.printStackTrace();
            }
        }
    Apabila menampilkan banyak error, anda cukup menekan CTRL+SHIFT+I untuk import seluruh library yang dibutuhkan. Agar kode program dapat di eksekusi, tentu harus ada komponen yang memerintahkan eksekusi. Maka pada masing-masing tombol buat lah Action Event, dengan cara double click saja komponen jButton. Pada masing-masing block kode program isi berdasarkan kode program dibawah ini.
        private void btn_inboxActionPerformed(java.awt.event.ActionEvent evt) {                                          
            cekInbox();
        }  
    Dan ini untuk tombol send.
        private void btn_kirimActionPerformed(java.awt.event.ActionEvent evt) {                                          
            JavaScMailer send = new JavaScMailer();
            send.setVisible(true);
            send.setAlwaysOnTop(true);
        }  
    Setelah selesai coba jalankan kode program di atas sehingga jika ada perintah eksekusi tiap tombol akan tampil seperti gambar berikut.
    Cara Mengambil Kotak Masuk Pesan Gmail di Java Swing 2
    Gambar 2

    Penutup

    Namun ada beberapa kelemahan saat kita membuat program seperti ini, load saat eksekusi program sangat lama, jika ada 1000 data maka load akan membutuhkan waktu yang cukup lama. Namun bisa saja kita mengakalinya dengan mengambil pesan masuk yang paling atas saja, atau mungkin saja ada beberapa library yang bisa kita gunakan saat meload data dari google mail yang banyak. Tentu pengalaman orang bisa saja melebihi dari tutorial diatas, silahkan berkomentar apabila memiliki tips dan trik yang lebih baik untuk tutorial Cara Mengambil Kotak Masuk Pesan Gmail di Java Swing.

    Terimakasih sudah berkesempatan untuk menimba ilmu dari blog JSC, semoga ilmu yang di share dapat bermanfaat. Jika ada pertanyaan mengenai ilmu yang terkait ataupun tidak, mari kita berdiskusi di dalam kolom komentar ini.

    Keep Learning and Keep Sharing