JavaMail API - Klasör Yönetimi

Şimdiye kadar, önceki bölümlerimizde çoğunlukla INBOX klasörü ile çalıştık. Bu, çoğu postanın bulunduğu varsayılan klasördür. Bazı sistemler onu INBOX olarak adlandırabilir ve bazıları başka bir adla adlandırabilir. Ancak, INBOX adını kullanarak her zaman JavaMail API'sinden erişebilirsiniz.

JavaMail API, klasörleri soyut Klasör sınıfının örnekleri olarak temsil eder:

public abstract class Folder extends Object

Bu sınıf, sunuculardan adlandırılmış klasörleri istemek, klasörlerden mesajları silmek, klasörlerde belirli mesajları aramak, bir klasördeki mesajları listelemek vb. İçin yöntemler bildirir.

Bir Klasör Açmak

Folder sınıfındaki tek kurucu korunduğu için doğrudan klasör oluşturamayız . Şuradan bir Klasör alabiliriz :

  • bir oturum

  • bir dükkan

  • veya başka bir Klasör

Yukarıdaki sınıfların tümü, benzer imzaya sahip benzer bir getFolder () yöntemine sahiptir:

public abstract Folder getFolder(String name) throws MessagingException

Klasör nesnesinin alınmasına yardımcı olan yöntemlerden bazıları şunlardır:

Yöntem Açıklama
boole var () Klasörün gerçekten var olup olmadığını kontrol eder. Folder nesnesini almadan önce bu yöntemi kullanın.
abstract void open (int modu) Bir Klasör aldığınızda , kapanır. Açmak için bu yöntemi kullanın. mod Folder.READ_ONLY veya Folder.READ_WRITE olabilir.
soyut boole isOpen () Bu yöntem döndürür gerçek klasör açıksa, sahte o kapalı olup olmadığını
abstract void close (boolean expunge) Klasörü kapatır. Eğer Silme işleminden argümanı gerçek , klasördeki silinen iletiler sunucuda gerçek dosyadan silinir. Aksi takdirde, basitçe silinmiş olarak işaretlenirler , ancak mesajların silinmesi yine de geri alınabilir.

Temel Klasör Bilgileri

Aşağıda, bir klasör hakkında temel bilgileri döndüren, Folder sınıfındaki yöntemlerden bazıları verilmiştir:

Yöntem Açıklama
abstract String getName () "TutorialsPoint Mail" gibi klasörün adını verir
abstract String getFullName () "Books / Manisha / TutorialsPoint Mail" gibi kökten tam hiyerarşik adı döndürür.
URLName getURLName () Bu klasörü temsil eden bir URLAdı döndür.
abstract Klasörü getParent () Bu klasörü içeren klasörün adını, yani ana klasörü döndürür. Örneğin, önceki "TutorialsPoint Mail" örneğinden "Manisha".
abstract int getType () Klasörün mesajlar ve / veya diğer klasörler içerip içermediğini belirten bir int döndürür.
int getMode () Mod bilinmediğinde, Folder.READ_ONLY veya Folder.READ_WRITE veya -1 adlı iki sabitten birini döndürür.
GetStore () depola Bu klasörün alındığı Mağaza nesnesini döndürür.
soyut karakter getSeparator () Bu Klasörün yol adını hemen alt klasörlerin adlarından ayıran sınırlayıcı karakteri döndür.

Klasörü Yönetme

Klasörü yönetmeye yardımcı olan yöntemlerden bazıları şunlardır:

Yöntem Açıklama
soyut boole oluşturma (int türü) Bu, bu klasörün Mağazasında yeni bir klasör oluşturur. Nerede tip olacaktır: Folder.HOLDS_MESSAGES veya Folder.HOLDS_FOLDERS. İade gerçek klasör başarıyla başka döner oluşturulursa yanlış .
abstract boolean delete (boolean recurse) Bu, klasörü yalnızca klasör kapalıysa siler. Aksi takdirde, bir IllegalStateException oluşturur . Eğer recurse olduğu doğrudur , o zaman alt klasörler silinir.
abstract boolean renameTo (Folder f) Bu, bu klasörün adını değiştirir. Bir klasörün yeniden adlandırılması için kapatılması gerekir. Aksi takdirde, bir IllegalStateException oluşturulur.

Klasörlerdeki Mesajları Yönetme

Klasördeki iletileri yönetmeye yardımcı olan yöntemlerden bazıları şunlardır:

Yöntem Açıklama
abstract void appendMessages (Mesaj [] mesajları) Adından da anlaşılacağı gibi, dizideki mesajlar bu klasörün sonuna yerleştirilir.
void copyMessages (Mesaj [] mesajları, Klasör hedefi) Bu, bu klasördeki mesajları bağımsız değişken olarak verilen belirli bir klasöre kopyalar.
soyut Mesaj [] silme () Bir klasörden bir mesajı silmek için Flags.Flag.DELETED bayrağını true olarak ayarlayın. Bir klasörden silinen mesajları fiziksel olarak kaldırmak için bu yöntemi çağırmanız gerekir.

Bir Klasörün İçeriğini Listeleme

Bir klasörün içerdiği klasörleri listelemenin dört yöntemi vardır:

Yöntem Açıklama
Klasör [] listesi () Bu, bu klasörün içerdiği klasörleri listeleyen bir dizi döndürür.
Klasör [] listSubscribed () Bu, bu klasörün içerdiği tüm abone olunan klasörleri listeleyen bir dizi döndürür.
soyut Klasör [] listesi (Dize modeli) Bu, kalıp belirlemenize izin vermesi dışında list () yöntemine benzer . Kalıp, eşleşen klasörlerin adını veren bir dizedir.
Klasör [] listSubscribed (Dize modeli) Bu, bir kalıp belirlemenize izin vermesi dışında listSubscribed () yöntemine benzer . Kalıp, eşleşen klasörlerin adını veren bir dizedir.

Posta Kontrolü

Yöntem Açıklama
abstract int getMessageCount () Bu yöntem, açık veya kapalı bir klasörde çağrılabilir. Bununla birlikte, kapalı bir klasör olması durumunda, bu yöntem, tam ileti sayısının kolayca bulunamadığını belirtmek için -1 döndürebilir (veya dönmeyebilir).
soyut boole hasNewMessages () Klasöre son açıldığından bu yana yeni mesajlar eklenmişse bu doğru döndürür .
int getNewMessageCount () SON bayrağı ayarlanmış klasördeki mesajları kontrol ederek yeni mesaj sayısını döndürür.
int getUnreadMessageCount () Bu, açık veya kapalı bir klasörde çağrılabilir. Bununla birlikte, kapalı bir klasör olması durumunda, gerçek cevabın elde edilmesinin çok pahalı olacağını belirtmek için -1 döndürebilir.

Klasörlerden Mesaj Alma

Folder sınıfı, açık klasörlerden mesajları almak için dört yöntem sağlar:

Yöntem Açıklama
abstract Message getMessage (int messageNumber) Bu, klasördeki n'inci mesajı döndürür. Klasördeki ilk mesaj 1 numara.
Mesaj [] getMessages () Bu , bu klasördeki tüm mesajları temsil eden bir dizi Mesaj nesnesi döndürür .
Mesaj [] getMessages (int start, int end) Bu , klasörden başlangıç ​​ile başlayan ve bitiş ile bitiş dahil olmak üzere bir dizi Mesaj nesnesi döndürür .
Mesaj [] getMessages (int [] mesajNumaraları) Bu, yalnızca messageNumbers dizisinde sayı ile özel olarak tanımlanan mesajları içeren bir dizi döndürür .
geçersiz getirme (İleti [] iletileri, FetchProfile fp) Verilen Mesajlar için FetchProfile'da belirtilen öğeleri önceden getirin. FetchProfile argümanı, iletilerdeki hangi başlıkların önceden getirileceğini belirtir.

Klasörleri Arama

Sunucu aramayı destekliyorsa (birçok IMAP sunucusunun yaptığı ve çoğu POP sunucusunun desteklemediği gibi), belirli kriterleri karşılayan mesajlar için bir klasör aramak kolaydır. Kriterler, SearchTerm nesnelerinde kodlanmıştır. İki arama yöntemi aşağıdadır:

Yöntem Açıklama
Mesaj [] arama (SearchTerm terimi) Bu Klasörü belirtilen arama kriteriyle eşleşen mesajlar için arayın. Eşleşen mesajları içeren bir dizi döndürür. Eşleşme bulunamazsa boş bir dizi döndürür.
Mesaj [] arama (Arama terimi, Mesaj [] mesajları) Belirtilen arama kriterine uyanlar için verilen mesaj dizisini arayın. Eşleşen mesajları içeren bir dizi döndürür. Eşleşme bulunamazsa boş bir dizi döndürür. Belirtilen Mesaj nesneleri bu klasöre ait olmalıdır.

Bayraklar

Bayrak değişikliği, bir Klasördeki tüm ileti kümesi için bayrakları değiştirmeniz gerektiğinde kullanışlıdır. Folder sınıfında sağlanan yöntemler şunlardır:

Yöntem Açıklama
void setFlags (Mesaj [] mesajları, Bayraklar bayrağı, boole değeri) Dizide belirtilen iletilerde belirtilen bayrakları ayarlar.
void setFlags (int start, int end, Flags flag, boolean değeri) Baştan sona numaralandırılmış mesajlarda belirtilen bayrakları ayarlar, hem başlangıç ​​hem de bitiş dahil.
void setFlags (int [] messageNumbers, Flags flag, boolean değeri) Dizide mesaj numaraları bulunan mesajlarda belirtilen bayrakları ayarlar.
soyut Bayraklar getPermanentFlags () Bu klasörün tüm mesajlar için desteklediği bayrakları döndürür.