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. |