JavaMail API - Menghapus Email
Pada bab ini kita akan melihat cara menghapus email menggunakan JavaMail API. Menghapus pesan melibatkan bekerja dengan Bendera yang terkait dengan pesan. Ada tanda berbeda untuk status berbeda, sebagian ditentukan sistem dan sebagian ditentukan pengguna. Bendera yang telah ditentukan sebelumnya ditentukan di kelas bagian dalam Flags.Flag dan didaftar di bawah ini:
Flags.Flag.ANSWERED
Flags.Flag.DELETED
Flags.Flag.DRAFT
Flags.Flag.FLAGGED
Flags.Flag.RECENT
Flags.Flag.SEEN
Flags.Flag.USER
Protokol POP hanya mendukung penghapusan pesan.
Langkah-langkah dasar yang diikuti dalam program hapus adalah:
Dapatkan objek Session dengan detail server POP dan SMPT di properti. Kami memerlukan detail POP untuk mengambil pesan dan detail SMPT untuk mengirim pesan.
Buat objek toko POP3 dan hubungkan ke toko.
Buat objek Folder dan buka folder yang sesuai di kotak surat Anda dalam mode READ_WRITE.
Mengambil pesan dari folder kotak masuk.
Iterasi melalui pesan dan ketik "Y" atau "y" jika Anda ingin menghapus pesan dengan menjalankan metode setFlag (Flags.Flag.DELETED, true) pada objek Message.
Pesan yang ditandai DIHAPUS sebenarnya tidak dihapus, sampai kita memanggil metode penghapusan () pada objek Folder, atau menutup folder dengan penghapusan yang disetel ke true.
Tutup objek toko.
Buat Kelas Java
Buat file kelas java ForwardEmail, yang isinya adalah sebagai berikut:
package com.tutorialspoint;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Properties;
import javax.mail.Flags;
import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.NoSuchProviderException;
import javax.mail.Session;
import javax.mail.Store;
public class DeleteEmail {
public static void delete(String pop3Host, String storeType, String user,
String password)
{
try
{
// get the session object
Properties properties = new Properties();
properties.put("mail.store.protocol", "pop3");
properties.put("mail.pop3s.host", pop3Host);
properties.put("mail.pop3s.port", "995");
properties.put("mail.pop3.starttls.enable", "true");
Session emailSession = Session.getDefaultInstance(properties);
// emailSession.setDebug(true);
// create the POP3 store object and connect with the pop server
Store store = emailSession.getStore("pop3s");
store.connect(pop3Host, user, password);
// create the folder object and open it
Folder emailFolder = store.getFolder("INBOX");
emailFolder.open(Folder.READ_WRITE);
BufferedReader reader = new BufferedReader(new InputStreamReader(
System.in));
// retrieve the messages from the folder in an array and print it
Message[] messages = emailFolder.getMessages();
System.out.println("messages.length---" + messages.length);
for (int i = 0; i < messages.length; i++) {
Message message = messages[i];
System.out.println("---------------------------------");
System.out.println("Email Number " + (i + 1));
System.out.println("Subject: " + message.getSubject());
System.out.println("From: " + message.getFrom()[0]);
String subject = message.getSubject();
System.out.print("Do you want to delete this message [y/n] ? ");
String ans = reader.readLine();
if ("Y".equals(ans) || "y".equals(ans)) {
// set the DELETE flag to true
message.setFlag(Flags.Flag.DELETED, true);
System.out.println("Marked DELETE for message: " + subject);
} else if ("n".equals(ans)) {
break;
}
}
// expunges the folder to remove messages which are marked deleted
emailFolder.close(true);
store.close();
} catch (NoSuchProviderException e) {
e.printStackTrace();
} catch (MessagingException e) {
e.printStackTrace();
} catch (IOException io) {
io.printStackTrace();
}
}
public static void main(String[] args) {
String host = "pop.gmail.com";// change accordingly
String mailStoreType = "pop3";
String username = "[email protected]";// change accordingly
String password = "*****";// change accordingly
delete(host, mailStoreType, username, password);
}
}
Anda dapat menyetel debug dengan menghapus komentar pernyataan emailSession.setDebug (true);
Kompilasi dan Jalankan
Sekarang kelas kita sudah siap, mari kita kompilasi kelas di atas. Saya telah menyimpan kelas DeleteEmail.java ke direktori:/home/manisha/JavaMailAPIExercise. Kita membutuhkan jars javax.mail.jar dan activation.jar di classpath. Jalankan perintah di bawah ini untuk mengkompilasi kelas (kedua jars ditempatkan di direktori / home / manisha /) dari command prompt:
javac -cp /home/manisha/activation.jar:/home/manisha/javax.mail.jar: DeleteEmail.java
Sekarang kelas telah dikompilasi, jalankan perintah berikut untuk menjalankan:
java -cp /home/manisha/activation.jar:/home/manisha/javax.mail.jar: DeleteEmail
Verifikasi Output
Anda akan melihat pesan berikut di konsol perintah:
messages.length---1
---------------------------------
Email Number 1
Subject: Testing
From: ABC <[email protected]>
Do you want to delete this message [y/n] ? y
Marked DELETE for message: Testing