Bekerja dengan Pesan dari Server
Mendapatkan Informasi Kotak Surat
Kita dapat memperoleh informasi tentang kotak surat seperti jumlah pesan dan ukuran kotak surat menggunakan getMailBoxSize dan getMailBoxInfo metode dari Pop3Client kelas.
- The getMailBoxSize metode mengembalikan ukuran kotak surat dalam byte.
- The getMailBoxInfo metode mengembalikan objek bertipe Pop3MailBoxInfo.
Juga dimungkinkan untuk mendapatkan jumlah pesan menggunakan MessageCount properti dan ukuran menggunakan OccupiedSize properti dari Pop3MailBoxInfo kelas. Kode contoh berikut menunjukkan cara mendapatkan informasi tentang kotak surat. Ini menunjukkan cara:
- Buat sebuah Pop3Client.
- Terhubung ke server POP3.
- Dapatkan ukuran kotak surat.
- Dapatkan info kotak surat.
- Dapatkan jumlah pesan dalam kotak surat.
- Dapatkan ukuran yang terpakai.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
Pop3Client client = new Pop3Client();
// Specify host, username, password, Port and SecurityOptions for your client
client.setHost("pop.gmail.com");
client.setUsername("your.username@gmail.com");
client.setPassword("your.password");
client.setPort(995);
client.setSecurityOptions(SecurityOptions.Auto);
// Get the size of the mailbox, Get mailbox info, number of messages in the mailbox
long nSize = client.getMailboxSize();
System.out.println("Mailbox size is " + nSize + " bytes.");
Pop3MailboxInfo info = client.getMailboxInfo();
int nMessageCount = info.getMessageCount();
System.out.println("Number of messages in mailbox are " + nMessageCount);
long nOccupiedSize = info.getOccupiedSize();
System.out.println("Occupied size is " + nOccupiedSize);
Mendapatkan Jumlah Email dalam Kotak Surat
Potongan kode berikut menunjukkan cara menghitung pesan email dalam kotak surat.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
Pop3Client client = new Pop3Client("pop3.server.com", "username", "password");
try {
client.setSecurityOptions(SecurityOptions.Auto);
int i = client.getMessageCount();
System.out.println("Message count: " + i);
} catch (Pop3Exception ex) {
System.out.println("Error:" + ex.toString());
}
Aspose.Email memungkinkan pengembang bekerja dengan email dalam berbagai cara. Misalnya, mereka dapat mengambil informasi header sebelum memutuskan apakah akan mengunduh email. Atau mereka dapat mengambil email dari server dan menyimpannya tanpa menguraikannya (lebih cepat) atau setelah menguraikannya (lebih lambat). Artikel ini menunjukkan cara mengambil dan mengonversi email.
Mengambil Informasi Header Email
Header email dapat memberikan informasi tentang pesan email yang dapat kita gunakan untuk memutuskan apakah akan mengambil seluruh pesan email atau tidak. Biasanya, informasi header berisi pengirim, subjek, tanggal diterima, dll. (Header email dijelaskan secara detail dalam Menyesuaikan Header Email. Topik itu secara khusus membahas pengiriman email dengan SMTP, tetapi informasi konten header email tetap berlaku untuk email POP3). Contoh-contoh berikut menunjukkan cara mengambil header email dari server POP3 berdasarkan nomor urut pesan.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// Create an instance of the Pop3Client class
Pop3Client client = new Pop3Client();
// Specify host, username. password, Port and SecurityOptions for your client
client.setHost("pop.gmail.com");
client.setUsername("your.username@gmail.com");
client.setPassword("your.password");
client.setPort(995);
client.setSecurityOptions(SecurityOptions.Auto);
try {
HeaderCollection headers = client.getMessageHeaders(1);
for (int i = 0; i < headers.size(); i++) {
// Display key and value in the header collection
System.out.print(headers.getKey(i));
System.out.print(" : ");
System.out.println(headers.get(i));
}
} catch (Exception ex) {
System.out.println(ex.getMessage());
} finally {
client.dispose();
}
Mengambil Pesan Email
The Pop3Client komponen kelas menyediakan kemampuan untuk mengambil pesan email dari server POP3, dan menguraikannya menjadi sebuah MailMessage instance dengan bantuan MailMessage komponen. The MailMessage kelas berisi beberapa properti dan metode untuk memanipulasi konten email. Dengan menggunakan fetchMessage metode dari Pop3Client kelas, Anda dapat mendapatkan sebuah MailMessage instance langsung dari server POP3. Cuplikan kode berikut menunjukkan cara mengambil pesan email lengkap dari server POP3.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// Create an instance of the Pop3Client class
Pop3Client client = new Pop3Client();
// Specify host, username, password, Port and SecurityOptions for your client
client.setHost("pop.gmail.com");
client.setUsername("your.username@gmail.com");
client.setPassword("your.password");
client.setPort(995);
client.setSecurityOptions(SecurityOptions.Auto);
try {
int messageCount = client.getMessageCount();
// Create an instance of the MailMessage class and Retrieve message
MailMessage message;
for (int i = 1; i <= messageCount; i++) {
message = client.fetchMessage(i);
System.out.println("From:" + message.getFrom());
System.out.println("Subject:" + message.getSubject());
System.out.println(message.getHtmlBody());
}
} catch (Exception ex) {
System.out.println(ex.getMessage());
} finally {
client.dispose();
}
Mengambil Informasi Ringkasan Pesan menggunakan Id Unik
Klien POP3 API dapat mengambil informasi ringkasan pesan dari server menggunakan id unik pesan. Ini memberikan akses cepat ke informasi singkat pesan tanpa harus mengambil pesan lengkap dari server terlebih dahulu. Cuplikan kode berikut menunjukkan cara mengambil informasi ringkasan pesan.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
String uniqueId = "unique id of a message from server";
Pop3Client client = new Pop3Client("host.domain.com", 456, "username", "password");
client.setSecurityOptions(SecurityOptions.Auto);
Pop3MessageInfo messageInfo = client.getMessageInfo(uniqueId);
if (messageInfo != null) {
System.out.println(messageInfo.getSubject());
System.out.println(messageInfo.getDate());
}
Mendaftarkan Pesan dengan MultiConnection
Pop3Client menyediakan sebuah UseMultiConnection properti yang dapat digunakan untuk membuat beberapa koneksi untuk operasi berat. Anda juga dapat mengatur jumlah koneksi yang akan digunakan selama mode multikoneksi dengan menggunakan Pop3Client.ConnectionsQuantity. Cuplikan kode berikut mendemonstrasikan penggunaan mode multikoneksi untuk mendaftar pesan dan membandingkan kinerjanya dengan mode koneksi tunggal.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// Create an instance of the Pop3Client class
Pop3Client pop3Client = new Pop3Client();
pop3Client.setHost("<HOST>");
pop3Client.setPort(995);
pop3Client.setUsername("<USERNAME>");
pop3Client.setPassword("<PASSWORD>");
pop3Client.setConnectionsQuantity(5);
pop3Client.setUseMultiConnection(MultiConnectionMode.Enable);
long multiConnectionModeStartTime = System.currentTimeMillis();
Pop3MessageInfoCollection messageInfoCol1 = pop3Client.listMessages();
long multiConnectionModeTimeSpan = System.currentTimeMillis() - multiConnectionModeStartTime;
pop3Client.setUseMultiConnection(MultiConnectionMode.Disable);
long singleConnectionModeStartTime = System.currentTimeMillis();
Pop3MessageInfoCollection messageInfoCol2 = pop3Client.listMessages();
long singleConnectionModeTimeSpan = System.currentTimeMillis() - singleConnectionModeStartTime;
System.out.println("multyConnectionModeTimeSpan: " + multiConnectionModeTimeSpan);
System.out.println("singleConnectionModeTimeSpan: " + singleConnectionModeTimeSpan);
double performanceRelation = singleConnectionModeTimeSpan / multiConnectionModeTimeSpan;
System.out.println("Performance Relation: " + performanceRelation);
Mengambil Pesan dari Server dan Menyimpan ke Disk
Simpan Pesan ke Disk tanpa Mengurai
Jika Anda ingin mengunduh pesan email dari server POP3 tanpa mengurainya, gunakan the Pop3Client kelas saveMessage fungsi. The saveMessage fungsi tidak menguraikan pesan email sehingga lebih cepat daripada the fetchMessage fungsi. Potongan kode berikut menunjukkan cara menyimpan pesan berdasarkan nomor urutnya, dalam hal ini, nomor 1. The saveMessage metode menyimpan pesan dalam format EML asli tanpa mengurainya.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// The path to the File directory.
String dataDir = "pop3/";
String dstEmail = dataDir + "InsertHeaders.eml";
// Create an instance of the Pop3Client class
Pop3Client client = new Pop3Client();
// Specify host, username, password, Port and SecurityOptions for your client
client.setHost("pop.gmail.com");
client.setUsername("your.username@gmail.com");
client.setPassword("your.password");
client.setPort(995);
client.setSecurityOptions(SecurityOptions.Auto);
try {
// Save message to disk by message sequence number
client.saveMessage(1, dstEmail);
client.dispose();
} catch (Exception ex) {
System.out.println(ex.getMessage());
}
System.out.println("Retrieved email messages using POP3 ");
Mengurai Pesan Sebelum Menyimpan
Potongan kode berikut menggunakan the Pop3Client fetchMessage metode untuk mengambil pesan dari server POP3 berdasarkan nomor urutnya, kemudian menyimpan pesan ke disk menggunakan subjek sebagai nama file.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// The path to the File directory.
String dataDir = "pop3/";
// Create an instance of the Pop3Client class
Pop3Client client = new Pop3Client();
// Specify host, username and password, Port and SecurityOptions for your client
client.setHost("pop.gmail.com");
client.setUsername("your.username@gmail.com");
client.setPassword("your.password");
client.setPort(995);
client.setSecurityOptions(SecurityOptions.Auto);
try {
// Fetch the message by its sequence number and Save the message using its subject as the file name
MailMessage msg = client.fetchMessage(1);
msg.save(dataDir + "first-message_out.eml", SaveOptions.getDefaultEml());
client.dispose();
} catch (Exception ex) {
System.out.println(ex.getMessage());
} finally {
client.dispose();
}
Pengambilan Pesan Grup
Pop3Client menyediakan sebuah fetchMessages metode yang menerima iterable dari Nomor Urut atau ID Unik dan mengembalikan daftar MailMessage. Potongan kode berikut menunjukkan penggunaan the fetchMessages metode untuk mengambil pesan berdasarkan Nomor Urut dan ID Unik.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// Create an instance of the Pop3Client class
Pop3Client pop3Client = new Pop3Client();
pop3Client.setHost("<HOST>");
pop3Client.setPort(995);
pop3Client.setUsername("<USERNAME>");
pop3Client.setPassword("<PASSWORD>");
Pop3MessageInfoCollection messageInfoCol = pop3Client.listMessages();
System.out.println("ListMessages Count: " + messageInfoCol.size());
List<Integer> sequenceNumberAr = new ArrayList<Integer>();
List<String> uniqueIdAr = new ArrayList<String>();
for (Pop3MessageInfo mi : messageInfoCol) {
sequenceNumberAr.add(mi.getSequenceNumber());
uniqueIdAr.add(mi.getUniqueId());
}
for (MailMessage m : pop3Client.fetchMessagesBySequences(sequenceNumberAr)) {
System.out.println("FetchMessages-sequenceNumberAr : " + m.getSubject());
}
for (MailMessage m : pop3Client.fetchMessagesByUids(uniqueIdAr)) {
System.out.println("FetchMessages-uniqueIdAr : " + m.getSubject());
}
Menyaring Pesan berdasarkan Pengirim, Penerima, atau Tanggal
The Pop3Client kelas, dijelaskan dalam Menyambungkan ke Server POP3, menyediakan listMessages metode yang mengambil semua pesan dari kotak surat. Untuk hanya mendapatkan pesan yang cocok dengan beberapa kondisi, gunakan overload listMessages metode yang mengambil MailQuery sebagai argumen. The MailQuery kelas menyediakan berbagai properti untuk menentukan kondisi kueri, misalnya, tanggal, subjek, pengirim, penerima, dan sebagainya. The MailQueryBuilder kelas digunakan untuk membangun ekspresi pencarian. Pertama, semua kondisi dan batasan diatur dan kemudian MailQuery diisi dengan kueri yang dikembangkan oleh MailQueryBuilder. The MailQuery objek kelas digunakan oleh Pop3Client untuk mengekstrak informasi yang disaring dari server. Artikel ini menunjukkan cara menyaring pesan email dari kotak surat. Contoh pertama menggambarkan cara menyaring pesan berdasarkan tanggal dan subjek. Kami juga menunjukkan cara menyaring berdasarkan kriteria lain dan cara membuat kueri yang lebih kompleks. Artikel ini juga menunjukkan penerapan filter Tanggal dan Waktu untuk mengambil email tertentu dari kotak surat. Selain itu, juga menunjukkan cara menerapkan penyaringan sensitif huruf besar/kecil.
Menyaring Pesan dari Kotak Surat
Untuk menyaring pesan dari kotak surat:
- Hubungkan dan masuk ke server POP3.
- Buat sebuah instance dari MailQuery dan mengatur properti yang diinginkan.
- Panggil Pop3Client.listMessages(MailQuery query) metode dan melewatkan MailQuery dalam parameter untuk hanya mendapatkan pesan yang disaring.
Potongan kode berikut menunjukkan cara terhubung ke kotak surat POP3 dan mengambil pesan yang tiba hari ini serta memiliki kata "newsletter" dalam subjek.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// Connect and log in to POP3
String host = "host";
int port = 110;
String username = "user@host.com";
String password = "password";
Pop3Client client = new Pop3Client(host, port, username, password);
// Set conditions, Subject contains "Newsletter", Emails that arrived today
MailQueryBuilder builder = new MailQueryBuilder();
builder.getSubject().contains("Newsletter");
builder.getInternalDate().on(new Date());
// Build the query and Get list of messages
MailQuery query = builder.getQuery();
Pop3MessageInfoCollection messages = client.listMessages(query);
System.out.println("Pop3: " + messages.size() + " message(s) found.");
Mendapatkan Pesan yang Memenuhi Kriteria Spesifik
Contoh kode di atas menyaring pesan berdasarkan subjek email dan tanggal. Kami dapat menggunakan properti lain untuk mengatur kondisi yang didukung lainnya juga. Berikut beberapa contoh pengaturan kondisi menggunakan MailQuery.
Potongan kode berikut menunjukkan cara menyaring email berdasarkan kriteria lain:
- Temukan email yang dikirim hari ini.
- Temukan email yang diterima dalam rentang tertentu.
- Temukan email dari pengirim tertentu.
- Temukan email yang dikirim dari domain tertentu.
- Temukan email yang dikirim ke penerima tertentu.
Tanggal Hari Ini
Potongan kode berikut menunjukkan cara menemukan email yang dikirim hari ini.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// Emails that arrived today
MailQueryBuilder builder = new MailQueryBuilder();
builder.getInternalDate().on(new Date());
Rentang Tanggal
Potongan kode berikut menunjukkan cara menemukan email yang diterima dalam rentang tertentu.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// Emails that arrived in last 7 days
Calendar calendar = Calendar.getInstance();
builder.getInternalDate().before(calendar.getTime());
calendar.add(Calendar.DATE, -7);
builder.getInternalDate().since(calendar.getTime());
Pengirim Khusus
Potongan kode berikut menunjukkan cara menemukan email dari pengirim tertentu.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// Get emails from specific sender
builder.getFrom().contains("saqib.razzaq@127.0.0.1");
Domain Khusus
Potongan kode berikut menunjukkan cara menemukan email yang dikirim dari domain tertentu.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// Get emails from specific domain
builder.getFrom().contains("SpecificHost.com");
Penerima Khusus
Potongan kode berikut menunjukkan cara menemukan email yang dikirim ke penerima tertentu.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// Get emails sent to specific recipient
builder.getTo().contains("recipient");
Membangun Kuiri Kompleks
Jika berbeda MailQueryBuilder properti diatur dalam pernyataan terpisah, maka semua kondisi akan cocok. Misalnya, jika kita ingin mendapatkan pesan antara rentang tanggal dan dari host tertentu, kita perlu menulis tiga pernyataan.
Menggabungkan Kuiri dengan AND
Potongan kode berikut menunjukkan cara menggabungkan kueri dengan AND.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// Emails from specific host, get all emails that arrived before today and all emails that arrived since 7 days ago
builder.getFrom().contains("SpecificHost.com");
Calendar calendar = Calendar.getInstance();
builder.getInternalDate().before(calendar.getTime());
calendar.add(Calendar.DATE, -7);
builder.getInternalDate().since(calendar.getTime());
Menggabungkan Kuiri dengan OR
MailQueryBuilder menyediakan atau metode yang mengambil dua MailQuery instance sebagai parameter. Ini mengambil pesan yang cocok dengan salah satu dari dua kondisi yang ditentukan. Potongan kode berikut menunjukkan cara menyaring pesan yang memiliki "test" dalam subjek atau "noreply@host.com" sebagai pengirim. Potongan kode berikut menunjukkan cara menggabungkan kueri dengan OR.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// Specify OR condition
builder.or(builder.getSubject().contains("test"), builder.getFrom().contains("noreply@host.com"));
Menerapkan Filter Sensitif Huruf Besar/Kecil
API juga menyediakan kemampuan untuk menyaring email dari kotak surat berdasarkan kriteria sensitif huruf besar/kecil. Metode berikut menyediakan kemampuan untuk mencari email dengan menentukan flag sensitif huruf besar/kecil.
- Metode StringComparisonField.contains(String value, boolean ignoreCase)
- Metode StringComparisonField.equals(String value, boolean ignoreCase)
- Metode StringComparisonField.notContains(String boolean, bool ignoreCase)
- Metode StringComparisonField.notEquals(String boolean, bool ignoreCase)
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// IgnoreCase is True
MailQueryBuilder builder1 = new MailQueryBuilder();
builder1.getFrom().contains("tesT", true);
MailQuery query1 = builder1.getQuery();
Pop3MessageInfoCollection messageInfoCol1 = client.listMessages(query1);