Menyambungkan ke Server IMAP

The ImapClient Kelas ini memungkinkan aplikasi mengelola kotak surat IMAP menggunakan protokol IMAP. ImapClient kelas digunakan untuk menyambungkan ke server surat IMAP dan mengelola email dalam folder email IMAP. Untuk menyambungkan ke server IMAP

  1. Buat sebuah instansi dari ImapClient kelas.
  2. Tentukan nama host, nama pengguna, dan kata sandi dalam konstruktor ImapClient.

Setelah ImapClient instansi diinisiasi, panggilan berikutnya ke operasi apapun menggunakan instansi ini akan menyambung ke server. Potongan kode berikut menunjukkan cara menyambungkan ke server IMAP menggunakan langkah-langkah di atas.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// Create an imapclient with host, user and password
ImapClient client = new ImapClient("localhost", "user", "password");

Menyambungkan dengan Server IMAP yang Mendukung SSL

Menyambungkan dengan Server IMAP menjelaskan cara menyambungkan ke server IMAP dalam empat langkah sederhana:

  1. Buat sebuah instansi dari ImapClient kelas.
  2. Tentukan nama host, nama pengguna, dan kata sandi.
  3. Tentukan port.
  4. Tentukan Opsi Keamanan.

Proses menyambungkan ke server IMAP yang mendukung SSL serupa tetapi memerlukan Anda mengatur beberapa properti tambahan:

Potongan kode berikut menunjukkan cara

  1. Atur nama pengguna, kata sandi, dan port.
  2. Atur opsi keamanan.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// Create an instance of the ImapClient class
ImapClient client = new ImapClient("imap.domain.com", 993, "user@domain.com", "pwd");

// Set the security mode to implicit
client.setSecurityOptions(SecurityOptions.SSLImplicit);

Menyambungkan ke Server melalui Proxy

Server proxy biasanya digunakan untuk berkomunikasi dengan dunia luar. Dalam kasus seperti itu, klien surat tidak dapat berkomunikasi melalui Internet tanpa menentukan alamat proxy. Aspose.Email menyediakan dukungan untuk versi 4, 4a, dan 5 dari protokol proxy SOCKS. Artikel ini memberikan contoh kerja mengakses kotak surat menggunakan server proxy surat. Untuk mengakses kotak surat melalui server proxy:

  1. Inisialisasi SocksProxy dengan informasi yang diperlukan, yaitu alamat proxy, port, dan versi SOCKS.
  2. Inisialisasi ImapClient dengan alamat host, nama pengguna, kata sandi, dan pengaturan lainnya.
  3. Atur klien SocksProxy properti ke SocksProxy objek yang dibuat di atas.

Potongan kode berikut menunjukkan cara mengambil kotak surat melalui server proxy.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// Connect and log in to IMAP and set SecurityOptions
ImapClient client = new ImapClient("imap.domain.com", "username", "password");
client.setSecurityOptions(SecurityOptions.Auto);

String proxyAddress = "192.168.203.142"; // proxy address
int proxyPort = 1080; // proxy port
SocksProxy proxy = new SocksProxy(proxyAddress, proxyPort, SocksVersion.SocksV5);

// Set the proxy
client.setProxy(proxy);

try {
    client.selectFolder("Inbox");
} catch (java.lang.RuntimeException ex) {
    System.out.println(ex.getMessage());
}

Menyambungkan ke Server melalui HTTP Proxy

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
HttpProxy proxy = new HttpProxy("18.222.124.59", 8080);
final ImapClient client = new ImapClient("imap.domain.com", "username", "password");
try {
    client.setProxy(proxy);
    client.selectFolder("Inbox");
} finally {
    if (client != null)
        client.dispose();
}

Sesuaikan Mekanisme Autentikasi

Ambil daftar mekanisme autentikasi yang didukung oleh server IMAP menggunakan getSupportedAuthentication metode dari ImapClient kelas. Metode ini memungkinkan klien menentukan metode autentikasi mana yang tersedia untuk membangun koneksi aman dengan server. Kemudian, dengan menggunakan setAllowedAuthentication metode yang mengambil (atau mengatur) enumerasi tipe autentikasi yang diizinkan oleh pengguna, pilih mekanisme autentikasi yang paling tepat untuk komunikasi klien-server. Ini memungkinkan Anda mengatur metode autentikasi untuk klien email secara eksplisit.

Contoh kode berikut menunjukkan cara menyesuaikan autentikasi klien email:

imapClient.setAllowedAuthentication(ImapKnownAuthenticationType.Plain);

Menyambungkan ke Server dalam mode Baca-Saja

The ImapClient kelas menyediakan sebuah ReadOnly properti yang ketika diatur ke true, menunjukkan bahwa tidak ada perubahan yang boleh dilakukan pada status permanen kotak surat. Contoh kode berikut mendemonstrasikan penggunaan ImapClient.ReadOnly properti. Ini memperoleh jumlah pesan yang belum dibaca, kemudian mengambil satu pesan dan kemudian memperoleh jumlah pesan yang belum dibaca lagi dalam mode baca-saja. Jumlah pesan yang belum dibaca tetap sama menandakan bahwa status permanen kotak surat tidak berubah.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
ImapClient imapClient = new ImapClient();
imapClient.setHost("<HOST>");
imapClient.setPort(993);
imapClient.setUsername("<USERNAME>");
imapClient.setPassword("<PASSWORD>");
imapClient.setSupportedEncryption(EncryptionProtocols.Tls);
imapClient.setSecurityOptions(SecurityOptions.SSLImplicit);

ImapQueryBuilder imapQueryBuilder = new ImapQueryBuilder();
imapQueryBuilder.hasNoFlags(ImapMessageFlags.isRead()); /* get unread messages. */
MailQuery query = imapQueryBuilder.getQuery();

imapClient.setReadOnly(true);
imapClient.selectFolder("Inbox");
ImapMessageInfoCollection messageInfoCol = imapClient.listMessages(query);
System.out.println("Initial Unread Count: " + messageInfoCol.size());
if (messageInfoCol.size() > 0) {
    imapClient.fetchMessage(messageInfoCol.get_Item(0).getSequenceNumber());

    messageInfoCol = imapClient.listMessages(query);
    // This count will be equal to the initial count
    System.out.println("Updated Unread Count: " + messageInfoCol.size());
} else {
    System.out.println("No unread messages found");
}

Menggunakan autentikasi CRAM-MD5 untuk Terhubung ke Server

Untuk memastikan autentikasi dan komunikasi yang aman dengan server IMAP, Anda dapat menentukan dan memberlakukan penggunaan CRAM-MD5 sebagai metode autentikasi yang diizinkan untuk klien IMAP. Potongan kode berikut menunjukkan cara mengonfigurasi jenis autentikasi yang diizinkan untuk ImapClient:

imapClient.setAllowedAuthentication(ImapKnownAuthenticationType.CramMD5);

Validasi Kredensial Server Mail Tanpa Mengirim Email

Kadang-kadang diperlukan untuk memverifikasi kredensial tanpa mengirim email. Aspose.Email menyediakan the validateCredentials() metode untuk melakukan operasi ini. Jika validasi berhasil, kode di dalam pernyataan if dijalankan, biasanya digunakan untuk melakukan tindakan lebih lanjut atau mengambil data dari server IMAP. Potongan kode berikut menunjukkan validasi kredensial tanpa mengirim email:

try (ImapClient imapClient = new ImapClient(
        server.ImapUrl, server.ImapPort, "username", "password", SecurityOptions.Auto)) {
    imapClient.setTimeout(4000);

    if (imapClient.validateCredentials()) {
        // to do something
    }
}

Cara Mengatur Timeout untuk Operasi Email

Setiap operasi email memerlukan waktu tergantung pada banyak faktor (penundaan jaringan, ukuran data, kinerja server, dll.). Anda dapat mengatur timeout untuk semua operasi email. Contoh kode di bawah ini menunjukkan cara melakukannya menggunakan Timeout properti. Catatan: Anda tidak seharusnya mengatur nilai besar untuk menghindari penundaan lama dalam aplikasi Anda.

try (ImapClient imapClient = new ImapClient("host", 993, "username", "password", SecurityOptions.SSLImplicit))
{
    imapClient.setTimeout(60000); // 60 seconds

    // some code...
}

Cara Membatasi Greeting Timeout

Klien IMAP dapat menggunakan mode otomatis untuk membuat koneksi. Dalam mode ini, klien IMAP mencoba semua parameter koneksi yang mungkin hingga koneksi berhasil. Server IMAP, jika koneksi benar, mengirimkan string salam kepada klien. Server dapat menggunakan inisiasi koneksi SSL/TLS implisit atau eksplisit (START TLS). Jika mode koneksi tidak cocok (misalnya, server menunggu koneksi SSL implisit namun klien mencoba membuat koneksi tidak aman atau SSL eksplisit), server tidak akan mengirimkan string salam dan pengguna akan menunggu lama hingga timeout tercapai, kemudian klien beralih ke opsi koneksi berikutnya. Untuk mengatasi masalah ini, GreetingTimeout diperkenalkan. Properti ini memungkinkan Anda menetapkan timeout untuk string salam, dan mengurangi waktu penetapan koneksi otomatis.

ImapClient imapClient = new ImapClient();
imapClient.setGreetingTimeout(4000);