JavaMail API - Server IMAP

IMAP adalah Akronim untuk Internet Message Access Protocol. Ini adalah protokol Internet Lapisan Aplikasi yang memungkinkan klien email mengakses email di server email jarak jauh. Server IMAP biasanya mendengarkan pada porta 143 yang terkenal. IMAP melalui SSL (IMAPS) ditetapkan ke nomor port 993.

IMAP mendukung mode operasi on-line dan off-line. Klien email yang menggunakan IMAP biasanya meninggalkan pesan di server sampai pengguna menghapusnya secara eksplisit.

Paket com.sun.mail.imapadalah penyedia protokol IMAP untuk JavaMail API yang menyediakan akses ke penyimpanan pesan IMAP. Tabel di bawah mencantumkan antarmuka dan kelas dari penyedia ini:

Kelas / Antarmuka Deskripsi
IMAPFolder.ProtocolCommand Ini antarmuka sederhana untuk perintah protokol IMAP yang ditentukan pengguna.
ACL Ini adalah kelas. Entri daftar kontrol akses untuk pengenal otentikasi tertentu (pengguna atau grup).
IMAPFolder Kelas ini mengimplementasikan folder IMAP.
IMAPFolder.FetchProfileItem Ini kelas untuk mengambil tajuk.
IMAPMessage Kelas ini mengimplementasikan objek ReadableMime.
IMAPMessage.FetchProfileCondition Kelas ini mengimplementasikan pengujian yang harus dilakukan pada setiap pesan di folder.
IMAPSSLStore Kelas ini menyediakan akses ke penyimpanan pesan IMAP melalui SSL.
IMAPStore Kelas ini menyediakan akses ke penyimpanan pesan IMAP.
Hak Kelas ini mewakili himpunan hak untuk pengenal otentikasi (misalnya, pengguna atau grup).
Hak. Benar Kelas batin ini mewakili hak individu.
SortTerm Kriteria pengurutan tertentu, seperti yang ditentukan oleh RFC 5256.

Beberapa poin yang perlu diperhatikan di atas penyedia ini:

  • Penyedia ini mendukung protokol IMAP4 dan IMAP4rev1.

  • IMAPStore yang terhubung memelihara kumpulan objek protokol IMAP untuk digunakan dalam berkomunikasi dengan server IMAP. Saat folder dibuka dan objek protokol IMAP baru diperlukan, IMAPStore akan menyediakannya dari kumpulan koneksi, atau membuatnya jika tidak ada yang tersedia. Ketika folder ditutup, objek protokol IMAP dikembalikan ke kumpulan koneksi jika kolam.

  • Objek IMAPStore terhubung mungkin atau mungkin tidak memelihara objek protokol IMAP terpisah yang menyediakan penyimpanan koneksi khusus ke server IMAP.

Penyedia protokol IMAP mendukung properti berikut ini, yang dapat disetel di objek Sesi JavaMail. Properti selalu ditetapkan sebagai string; ituType kolom menjelaskan bagaimana string diinterpretasikan.

Nama Tipe Deskripsi
mail.imap.user Tali Nama pengguna default untuk IMAP.
mail.imap.host Tali Server IMAP yang akan disambungkan.
mail.imap.port int Porta server IMAP yang akan disambungkan, jika metode connect () tidak secara eksplisit menetapkannya. Default-nya 143.
mail.imap.pihakfetch boolean Mengontrol apakah kemampuan pengambilan sebagian IMAP harus digunakan. Default-nya adalah true.
mail.imap.fetchsize int Ukuran pengambilan sebagian dalam byte. Default-nya 16K.
mail.imap.ignorebodystructuresize boolean Respons IMAP BODYSTRUCTURE mencakup ukuran pasti setiap bagian tubuh. Biasanya, ukuran ini digunakan untuk menentukan berapa banyak data yang akan diambil untuk setiap bagian tubuh. Default-nya adalah false.
mail.imap.connectiontimeout int Nilai batas waktu koneksi soket dalam milidetik. Default adalah waktu tunggu tak terbatas.
mail.imap.timeout int Nilai batas waktu I / O soket dalam milidetik. Default adalah waktu tunggu tak terbatas.
mail.imap.statuscachetimeout int Nilai batas waktu dalam milidetik untuk cache dari respons perintah STATUS. Defaultnya adalah 1000 (1 detik). Zero menonaktifkan cache.
mail.imap.appendbuffersize int Ukuran maksimum pesan untuk buffer di memori saat menambahkan ke folder IMAP.
mail.imap.connectionpoolsize int Jumlah maksimum koneksi yang tersedia di kumpulan koneksi. Default-nya adalah 1.
mail.imap.connectionpooltimeout int Nilai batas waktu dalam milidetik untuk koneksi kumpulan koneksi. Defaultnya adalah 45000 (45 detik).
mail.imap.separatestoreconnection boolean Bendera untuk menunjukkan apakah akan menggunakan koneksi penyimpanan khusus untuk perintah penyimpanan. Default-nya salah.
mail.imap.auth.login.disable boolean Jika benar, cegah penggunaan perintah LOGIN AUTHENTICATE non-standar, sebagai gantinya gunakan perintah LOGIN biasa. Default-nya salah.
mail.imap.auth.plain.disable boolean Jika benar, cegah penggunaan perintah AUTHENTICATE PLAIN. Default-nya salah.
mail.imap.auth.ntlm.disable boolean Jika benar, cegah penggunaan perintah AUTHENTICATE NTLM. Default-nya salah.
mail.imap.proxyauth.user Tali Jika server mendukung ekstensi PROXYAUTH, properti ini menetapkan nama pengguna yang akan digunakan. Otentikasi ke server menggunakan kredensial administrator. Setelah otentikasi, penyedia IMAP akan mengeluarkan perintah PROXYAUTH dengan nama pengguna yang ditentukan di properti ini.
mail.imap.localaddress Tali Alamat lokal (nama host) yang akan diikat saat membuat soket IMAP. Default ke alamat yang dipilih oleh kelas Socket.
mail.imap.localport int Nomor port lokal untuk mengikat saat membuat soket IMAP. Secara default, nomor port yang dipilih oleh kelas Socket.
mail.imap.sasl.enable boolean Jika disetel ke true, coba gunakan paket javax.security.sasl untuk memilih mekanisme autentikasi untuk login. Default-nya adalah false.
mail.imap.sasl.mechanisms Tali Daftar nama mekanisme SASL yang dipisahkan spasi atau koma untuk dicoba digunakan.
mail.imap.sasl.authorizationid Tali ID otorisasi untuk digunakan dalam otentikasi SASL. Jika tidak diatur, ID otentikasi (nama pengguna) digunakan.
mail.imap.sasl.realm Tali Ranah yang akan digunakan dengan mekanisme otentikasi SASL yang membutuhkan ranah, seperti DIGEST-MD5.
mail.imap.auth.ntlm.domain Tali Domain otentikasi NTLM.
mail.imap.auth.ntlm.flags int Bendera khusus protokol NTLM.
mail.imap.socketFactory Pabrik Socket Jika disetel ke kelas yang mengimplementasikan antarmuka javax.net.SocketFactory, kelas ini akan digunakan untuk membuat soket IMAP.
mail.imap.socketFactory.class Tali Jika disetel, tentukan nama kelas yang mengimplementasikan antarmuka javax.net.SocketFactory. Kelas ini akan digunakan untuk membuat soket IMAP.
mail.imap.socketFactory.fallback boolean Jika disetel ke true, kegagalan untuk membuat soket menggunakan kelas pabrik soket yang ditentukan akan menyebabkan soket dibuat menggunakan kelas java.net.Socket. Default-nya adalah true.
mail.imap.socketFactory.port int Menentukan port yang akan dihubungkan saat menggunakan pabrik soket yang ditentukan. Port default digunakan jika tidak disetel.
mail.imap.ssl.enable boolean Jika disetel ke true, gunakan SSL untuk menghubungkan dan menggunakan port SSL secara default. Defaultnya adalah false untuk protokol "imap" dan true untuk protokol "imaps".
mail.imap.ssl.checkserveridentity boolean Jika disetel ke true, periksa identitas server seperti yang ditentukan oleh RFC 2595. Defaultnya salah.
mail.imap.ssl.trust Tali Jika disetel, dan pabrik soket belum ditentukan, memungkinkan penggunaan MailSSLSocketFactory.
Jika disetel ke "*", semua host dipercaya.
Jika disetel ke daftar host yang dipisahkan spasi putih, host tersebut dipercaya.
Jika tidak, kepercayaan bergantung pada sertifikat yang diberikan server.
mail.imap.ssl.socketFactory Pabrik Soket SSL Jika disetel ke kelas yang memperluas kelas javax.net.ssl.SSLSocketFactory, kelas ini akan digunakan untuk membuat soket SSL IMAP.
mail.imap.ssl.socketFactory.class Tali Jika disetel, tentukan nama kelas yang memperluas kelas javax.net.ssl.SSLSocketFactory. Kelas ini akan digunakan untuk membuat soket SSL IMAP.
mail.imap.ssl.socketFactory.port int Menentukan port yang akan dihubungkan saat menggunakan pabrik soket yang ditentukan. Jika tidak disetel, port default akan digunakan.
mail.imap.ssl.protocols tali Menentukan protokol SSL yang akan diaktifkan untuk koneksi SSL. Nilai properti adalah daftar token yang dipisahkan spasi putih yang dapat diterima oleh metode javax.net.ssl.SSLSocket.setEnabledProtocols.
mail.imap.starttls.enable boolean Jika benar, aktifkan penggunaan perintah STARTTLS (jika didukung oleh server) untuk mengalihkan koneksi ke koneksi yang dilindungi TLS sebelum mengeluarkan perintah login apa pun. Default-nya salah.
mail.imap.starttls.required boolean Jika benar, membutuhkan penggunaan perintah STARTTLS. Jika server tidak mendukung perintah STARTTLS, atau perintah gagal, metode hubungkan akan gagal. Default-nya adalah false.
mail.imap.socks.host tali Menentukan nama host dari server proxy SOCKS5 yang akan digunakan untuk koneksi ke server email.
mail.imap.socks.port tali Menentukan nomor port untuk server proxy SOCKS5. Ini hanya perlu digunakan jika server proxy tidak menggunakan nomor port standar 1080.
mail.imap.minidletime int Properti ini menyetel penundaan dalam milidetik. Jika tidak disetel, defaultnya adalah 10 milidetik.
mail.imap.enableimapevents boolean Aktifkan acara khusus IMAP untuk dikirim ke ConnectionListener Store. Jika benar, tanggapan yang tidak diminta yang diterima selama metode diam Store akan dikirim sebagai ConnectionEvents dengan jenis IMAPStore.RESPONSE. Pesan acara tersebut akan menjadi string respons IMAP mentah. Secara default, acara ini tidak dikirim.
mail.imap.folder.class Tali Nama kelas dari subkelas com.sun.mail.imap.IMAPFolder. Subclass dapat digunakan untuk memberikan dukungan untuk perintah IMAP tambahan. Subclass harus memiliki konstruktor publik dalam bentuk MyIMAPFolder publik (String fullName, pemisah karakter, toko IMAPStore, Boolean isNamespace) dan MyIMAPFolder publik (ListInfo li, toko IMAPStore)

Secara umum, aplikasi tidak perlu menggunakan kelas-kelas dalam paket ini secara langsung. Sebaliknya, mereka harus menggunakan API yang ditentukan oleh paket javax.mail (dan sub-paket). Aplikasi tidak boleh membuat instance IMAPStore atau IMAPFolder secara langsung. Sebaliknya, mereka harus menggunakan metode Sesi getStore untuk mendapatkan objek Store yang sesuai, dan dari situ memperoleh objek Folder.

Contoh untuk menggunakan server IMAP ditunjukkan dalam bab Manajemen Kuota .