MASIGNCLEAN101

Cara Mengambil Kotak Masuk Pesan Gmail di Java Swing

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.
Share This :
Hady Eka Saputra

Belajar adalah proses menuju kesuksesan dan proses membuat hasilnya menjadi bernilai. 

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