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 () ส่งคืนแฟล็กที่โฟลเดอร์นี้รองรับสำหรับข้อความทั้งหมด