Mendeteksi Pesan Email Baru pada Server POP3
Dengan akun POP3 Anda dapat meninggalkan pesan di server saat mengunduh dan membacanya. Meninggalkan email di server berarti email tersebut tersedia bagi aplikasi dan individu lain, misalnya pengguna yang mengakses email mereka dari beberapa perangkat. Atau Anda mungkin ingin hanya mengunduh pesan yang memenuhi kriteria tertentu, seperti pesan dengan baris subjek tertentu. Untuk mengelola email, Anda dapat;
- Baca semua pesan dari server mail POP3 menggunakan Aspose.Email.
- Unduh pesan ke database lokal Anda.
Pesan tidak dihapus melainkan tetap di server. Pada kali pertama dijalankan, proses ini berjalan baik. Semua pesan yang diperlukan diunduh ke database. Namun pada kali kedua, pesan yang sama diunduh kembali karena masih berada di server email. Hal ini menyebabkan catatan duplikat. Untuk mengatasi masalah ini, gunakan Pop3MessageInfo.UniqueID properti untuk memeriksa apakah sebuah pesan sudah diunduh. ID unik pesan harus disimpan di database: ini adalah kunci pencarian untuk mendeteksi pesan baru.
Mendeteksi Pesan Baru
Untuk mengidentifikasi email baru dari daftar email pada server POP3:
- Hubungkan ke server.
- Dapatkan daftar email.
- Hubungkan ke database.
- Dapatkan daftar email.
- Bandingkan daftar.
- Simpan email baru ke database.
Proses menjadi lebih cepat ketika Anda:
- Ambil semua ID unik pesan ke dalam tabel hash.
- Cari tabel hash alih-alih database untuk setiap pesan email dalam loop for(…).
Alih-alih menanyakan database untuk setiap pesan, yang memerlukan banyak panggilan database, metode ini hanya memerlukan satu panggilan. Potongan kode berikut menunjukkan cara mendeteksi pesan Email baru pada server POP3.
public static void run() {
try {
// Connect to the POP3 mail server and check messages.
Pop3Client pop3Client = new Pop3Client("pop.domain.com", 993, "username", "password");
// List all the messages
Pop3MessageInfoCollection msgList = pop3Client.listMessages();
for (Pop3MessageInfo msgInfo : msgList) {
// Get the POP3 message's unique ID
String strUniqueID = msgInfo.getUniqueId();
// Search your local database or data store on the unique ID. If a match is found, that means it's already downloaded. Otherwise download and save it.
if (searchPop3MsgInLocalDB(strUniqueID) == true) {
// The message is already in the database. Nothing to do with this message. Go to next message.
} else {
// Save the message
savePop3MsgInLocalDB(msgInfo);
}
}
} catch (Exception ex) {
System.err.println(ex);
}
}
private static void savePop3MsgInLocalDB(Pop3MessageInfo msgInfo) {
// Open the database connection according to your database. Use public properties (for example msgInfo.Subject) and store in database,
// for example, " INSERT INTO POP3Mails (UniqueID, Subject) VALUES ('" + msgInfo.UniqueID + "' , '" + msgInfo.Subject + "') and Run the query to store in database.
}
private static boolean searchPop3MsgInLocalDB(String strUniqueID) {
// Open the database connection according to your database. Use strUniqueID in the search query to find existing records,
// for example, " SELECT COUNT(*) FROM POP3Mails WHERE UniqueID = '" + strUniqueID + "' Run the query, return true if count == 1. Return false if count == 0.
return false;
}