JavaMail API - การจัดการโฟลเดอร์
จนถึงตอนนี้เราทำงานในบทก่อนหน้าของเราเป็นส่วนใหญ่กับโฟลเดอร์ INBOX นี่คือโฟลเดอร์เริ่มต้นที่เมลส่วนใหญ่อยู่ ระบบบางระบบอาจเรียกว่า INBOX และบางระบบอาจเรียกด้วยชื่ออื่น แต่คุณสามารถเข้าถึงได้จาก JavaMail API โดยใช้ชื่อ INBOX
JavaMail API แทนโฟลเดอร์เป็นอินสแตนซ์ของคลาส Abstract Folder:
public abstract class Folder extends Object
คลาสนี้ประกาศวิธีการขอโฟลเดอร์ที่มีชื่อจากเซิร์ฟเวอร์การลบข้อความจากโฟลเดอร์ค้นหาข้อความเฉพาะในโฟลเดอร์แสดงรายการข้อความในโฟลเดอร์และอื่น ๆ
การเปิดโฟลเดอร์
เราไม่สามารถสร้างโฟลเดอร์โดยตรงเป็นตัวสร้างเฉพาะในโฟลเดอร์ชั้นการป้องกัน เราสามารถรับโฟลเดอร์ได้จาก:
เซสชัน
ร้านค้า
หรือโฟลเดอร์อื่น
คลาสข้างต้นทั้งหมดมีเมธอด getFolder () ที่คล้ายกันพร้อมลายเซ็นที่คล้ายกัน:
public abstract Folder getFolder(String name) throws MessagingException
วิธีการบางอย่างที่ช่วยในการรับอ็อบเจ็กต์Folderได้แก่ :
วิธี | คำอธิบาย |
---|---|
มีบูลีนอยู่ () | ตรวจสอบว่ามีโฟลเดอร์อยู่จริงหรือไม่ ใช้วิธีนี้ก่อนรับอ็อบเจกต์ Folder |
โมฆะนามธรรมเปิด (โหมด int) | เมื่อคุณได้รับโฟลเดอร์โฟลเดอร์จะปิด ใช้วิธีนี้เพื่อเปิด โหมดสามารถ Folder.READ_ONLY หรือ Folder.READ_WRITE |
บูลีนนามธรรมisOpen () | วิธีนี้จะคืนค่าเป็นจริงหากเปิดโฟลเดอร์เท็จถ้าปิด |
ปิดโมฆะนามธรรม(ล้างบูลีน) | ปิดโฟลเดอร์ ถ้าอาร์กิวเมนต์expungeเป็นจริงข้อความที่ถูกลบในโฟลเดอร์จะถูกลบออกจากไฟล์จริงบนเซิร์ฟเวอร์ มิฉะนั้นข้อความเหล่านี้จะถูกทำเครื่องหมายว่าลบแล้วแต่ข้อความยังคงสามารถยกเลิกการลบได้ |
ข้อมูลโฟลเดอร์พื้นฐาน
ต่อไปนี้เป็นวิธีการบางอย่างในคลาสโฟลเดอร์ซึ่งส่งคืนข้อมูลพื้นฐานเกี่ยวกับโฟลเดอร์:
วิธี | คำอธิบาย |
---|---|
สตริงนามธรรมgetName () | ส่งคืนชื่อของโฟลเดอร์เช่น "TutorialsPoint Mail" |
สตริงนามธรรมgetFullName () | ส่งคืนชื่อตามลำดับชั้นที่สมบูรณ์จากรากเช่น "books / Manisha / TutorialsPoint Mail" |
ชื่อ URL getURLName () | ส่งคืน URLName ที่แสดงถึงโฟลเดอร์นี้ |
โฟลเดอร์นามธรรมgetParent () | ส่งคืนชื่อของโฟลเดอร์ที่มีโฟลเดอร์นี้คือโฟลเดอร์หลัก เช่น "Manisha" จากตัวอย่าง "TutorialsPoint Mail" ก่อนหน้านี้ |
getType int นามธรรม() | ส่งคืน int ที่ระบุว่าโฟลเดอร์นั้นสามารถมีข้อความและ / หรือโฟลเดอร์อื่น ๆ |
int getMode () | จะส่งคืนค่าคงที่หนึ่งในสองชื่อ Folder.READ_ONLY หรือ Folder.READ_WRITE หรือ -1 เมื่อไม่รู้จักโหมด |
จัดเก็บgetStore () | ส่งคืนอ็อบเจ็กต์ Store ที่เรียกค้นโฟลเดอร์นี้ |
ถ่านนามธรรมgetSeparator () | ส่งคืนอักขระตัวคั่นที่แยกชื่อพา ธ ของโฟลเดอร์นี้ออกจากชื่อของโฟลเดอร์ย่อยทันที |
การจัดการโฟลเดอร์
ต่อไปนี้เป็นวิธีการบางอย่างที่ช่วยจัดการโฟลเดอร์:
วิธี | คำอธิบาย |
---|---|
สร้างบูลีนนามธรรม(ประเภท int) | สิ่งนี้จะสร้างโฟลเดอร์ใหม่ใน Store ของโฟลเดอร์นี้ ประเภทจะอยู่ที่ไหน: Folder.HOLDS_MESSAGES หรือ Folder.HOLDS_FOLDERS ผลตอบแทนที่แท้จริงถ้าโฟลเดอร์จะถูกสร้างขึ้นประสบความสำเร็จผลตอบแทนอื่น ๆที่เป็นเท็จ |
การลบบูลีนนามธรรม(เรียกคืนบูลีน) | การดำเนินการนี้จะลบโฟลเดอร์เฉพาะเมื่อปิดโฟลเดอร์เท่านั้น มิฉะนั้นจะพ่นIllegalStateException ถ้าrecurseเป็นจริงแล้วโฟลเดอร์ย่อยจะถูกลบออก |
นามธรรมบูลrenameTo (ฉ Folder) | สิ่งนี้จะเปลี่ยนชื่อของโฟลเดอร์นี้ ต้องปิดโฟลเดอร์เพื่อเปลี่ยนชื่อ มิฉะนั้น IllegalStateException จะถูกโยนทิ้ง |
การจัดการข้อความในโฟลเดอร์
ต่อไปนี้เป็นวิธีการบางอย่างที่ช่วยจัดการข้อความในโฟลเดอร์:
วิธี | คำอธิบาย |
---|---|
โมฆะนามธรรมappendMessages (ข้อความ [] ข้อความ) | ตามความหมายของชื่อข้อความในอาร์เรย์จะอยู่ที่ท้ายโฟลเดอร์นี้ |
โมฆะcopyMessages (ข้อความ [] ข้อความ, โฟลเดอร์ปลายทาง) | ซึ่งจะคัดลอกข้อความจากโฟลเดอร์นี้ไปยังโฟลเดอร์ที่ระบุซึ่งกำหนดให้เป็นอาร์กิวเมนต์ |
ข้อความนามธรรม [] ล้าง () | ในการลบข้อความออกจากโฟลเดอร์ให้ตั้งค่าแฟล็ก Flags.Flag.DELETED เป็น true ในการลบข้อความที่ถูกลบออกจากโฟลเดอร์คุณต้องเรียกวิธีนี้ |
การแสดงรายการเนื้อหาของโฟลเดอร์
มีสี่วิธีในการแสดงรายการโฟลเดอร์ที่โฟลเดอร์ประกอบด้วย:
วิธี | คำอธิบาย |
---|---|
โฟลเดอร์ [] รายการ () | สิ่งนี้ส่งคืนอาร์เรย์ที่แสดงรายการโฟลเดอร์ที่โฟลเดอร์นี้มี |
โฟลเดอร์ [] listSubscribed () | สิ่งนี้ส่งคืนอาร์เรย์ที่แสดงรายการโฟลเดอร์ที่สมัครสมาชิกทั้งหมดที่โฟลเดอร์นี้มีอยู่ |
โฟลเดอร์นามธรรม[] รายการ (รูปแบบสตริง) | ซึ่งคล้ายกับวิธีlist ()ยกเว้นว่าจะช่วยให้คุณระบุรูปแบบได้ รูปแบบเป็นสตริงที่ระบุชื่อของโฟลเดอร์ที่ตรงกัน |
โฟลเดอร์ [] listSubscribed (รูปแบบสตริง) | ซึ่งคล้ายกับเมธอด listSubscribed ()ยกเว้นว่าจะอนุญาตให้คุณระบุรูปแบบ รูปแบบเป็นสตริงที่ระบุชื่อของโฟลเดอร์ที่ตรงกัน |
กำลังตรวจสอบเมล
วิธี | คำอธิบาย |
---|---|
นามธรรม int getMessageCount () | วิธีนี้สามารถเรียกใช้ในโฟลเดอร์ที่เปิดหรือปิด อย่างไรก็ตามในกรณีของโฟลเดอร์ปิดวิธีนี้อาจ (หรืออาจไม่) คืนค่า -1 เพื่อระบุว่าจำนวนข้อความที่แน่นอนนั้นไม่สามารถใช้ได้อย่างง่ายดาย |
บูลีนนามธรรมhasNewMessages () | สิ่งนี้จะคืนค่าเป็นจริงหากมีการเพิ่มข้อความใหม่ในโฟลเดอร์ตั้งแต่เปิดครั้งล่าสุด |
int getNewMessageCount () | ส่งคืนจำนวนข้อความใหม่โดยตรวจสอบข้อความในโฟลเดอร์ที่ตั้งค่าสถานะ RECENT |
int getUnreadMessageCount () | สิ่งนี้สามารถเรียกใช้ได้ทั้งในโฟลเดอร์ที่เปิดหรือปิด อย่างไรก็ตามในกรณีของโฟลเดอร์ที่ปิดอาจส่งคืน -1 เพื่อระบุว่าคำตอบที่แท้จริงจะมีราคาแพงเกินไปที่จะได้รับ |
รับข้อความจากโฟลเดอร์
คลาสโฟลเดอร์มีสี่วิธีในการดึงข้อความจากโฟลเดอร์ที่เปิดอยู่:
วิธี | คำอธิบาย |
---|---|
ข้อความนามธรรมgetMessage (int messageNumber) | ส่งคืนข้อความที่ n ในโฟลเดอร์ ข้อความแรกในโฟลเดอร์คือหมายเลข 1 |
ข้อความ [] getMessages () | ส่งคืนอาร์เรย์ของวัตถุข้อความที่แสดงข้อความทั้งหมดในโฟลเดอร์นี้ |
ข้อความ [] getMessages (int start, int end) | สิ่งนี้ส่งคืนอาร์เรย์ของวัตถุข้อความจากโฟลเดอร์โดยเริ่มต้นด้วย start และจบด้วย end, inclusive |
ข้อความ [] getMessages (int [] messageNumbers) | ส่งคืนอาร์เรย์ที่มีเฉพาะข้อความที่ระบุโดยตัวเลขในอาร์เรย์messageNumbers |
โมฆะการดึง (ข้อความ [] ข้อความ FetchProfile fp) | ดึงรายการที่ระบุไว้ใน FetchProfile สำหรับข้อความที่กำหนดไว้ล่วงหน้า อาร์กิวเมนต์ FetchProfile ระบุส่วนหัวในข้อความที่จะดึงข้อมูลล่วงหน้า |
กำลังค้นหาโฟลเดอร์
หากเซิร์ฟเวอร์รองรับการค้นหา (เช่นเดียวกับเซิร์ฟเวอร์ IMAP จำนวนมากและเซิร์ฟเวอร์ POP ส่วนใหญ่ไม่ทำ) คุณสามารถค้นหาโฟลเดอร์สำหรับข้อความที่ตรงตามเกณฑ์ที่กำหนดได้โดยง่าย เกณฑ์ถูกเข้ารหัสในวัตถุ SearchTerm ต่อไปนี้เป็นวิธีการค้นหาสองวิธี:
วิธี | คำอธิบาย |
---|---|
ข้อความ [] ค้นหา (คำค้นหา SearchTerm) | ค้นหาโฟลเดอร์นี้สำหรับข้อความที่ตรงกับเกณฑ์การค้นหาที่ระบุ ส่งคืนอาร์เรย์ที่มีข้อความที่ตรงกัน ส่งคืนอาร์เรย์ว่างหากไม่พบรายการที่ตรงกัน |
ข้อความ [] ค้นหา (คำค้นหาข้อความข้อความ []) | ค้นหาอาร์เรย์ของข้อความที่กำหนดสำหรับข้อความที่ตรงกับเกณฑ์การค้นหาที่ระบุ ส่งคืนอาร์เรย์ที่มีข้อความที่ตรงกัน ส่งคืนอาร์เรย์ว่างหากไม่พบรายการที่ตรงกัน วัตถุข้อความที่ระบุต้องเป็นของโฟลเดอร์นี้ |
ธง
การแก้ไขแฟล็กมีประโยชน์เมื่อคุณต้องการเปลี่ยนแฟล็กสำหรับชุดข้อความทั้งหมดในโฟลเดอร์ ต่อไปนี้เป็นวิธีการที่มีให้ในคลาสโฟลเดอร์:
วิธี | คำอธิบาย |
---|---|
เป็นโมฆะsetFlags (ข้อความ [] ข้อความแฟล็กค่าสถานะบูลีน) | ตั้งค่าแฟล็กที่ระบุบนข้อความที่ระบุในอาร์เรย์ |
เป็นโมฆะsetFlags (int เริ่มต้น int end แฟล็กแฟล็กค่าบูลีน) | ตั้งค่าแฟล็กที่ระบุบนข้อความที่มีหมายเลขตั้งแต่ต้นจนจบทั้งเริ่มต้นและสิ้นสุดรวม |
เป็นโมฆะsetFlags (int [] messageNumbers แฟล็กแฟล็กค่าบูลีน) | ตั้งค่าแฟล็กที่ระบุบนข้อความที่มีหมายเลขข้อความอยู่ในอาร์เรย์ |
ธงนามธรรมgetPermanentFlags () | ส่งคืนแฟล็กที่โฟลเดอร์นี้รองรับสำหรับข้อความทั้งหมด |