JavaMail API - เซิร์ฟเวอร์ IMAP
IMAP เป็นคำย่อของ Internet Message Access Protocol. เป็นโปรโตคอลอินเทอร์เน็ตของ Application Layer ที่อนุญาตให้ไคลเอนต์อีเมลเข้าถึงอีเมลบนเซิร์ฟเวอร์อีเมลระยะไกล โดยทั่วไปเซิร์ฟเวอร์ IMAP จะรับฟังบนพอร์ต 143 ที่รู้จักกันดี IMAP ผ่าน SSL (IMAPS) ถูกกำหนดให้กับพอร์ตหมายเลข 993
IMAP รองรับโหมดการทำงานทั้งออนไลน์และออฟไลน์ อีเมลไคลเอ็นต์ที่ใช้ IMAP โดยทั่วไปจะทิ้งข้อความไว้บนเซิร์ฟเวอร์จนกว่าผู้ใช้จะลบออกอย่างชัดเจน
แพ็คเกจ com.sun.mail.imapเป็นผู้ให้บริการโปรโตคอล IMAP สำหรับ JavaMail API ที่ให้การเข้าถึงที่เก็บข้อความ IMAP ตารางด้านล่างแสดงอินเทอร์เฟซและคลาสของผู้ให้บริการนี้:
คลาส / อินเทอร์เฟซ | คำอธิบาย |
---|---|
IMAPFolder.ProtocolCommand | อินเทอร์เฟซที่เรียบง่ายสำหรับคำสั่งโปรโตคอล IMAP ที่ผู้ใช้กำหนดเอง |
ACL | นี่คือชั้นเรียน รายการควบคุมการเข้าถึงสำหรับตัวระบุการพิสูจน์ตัวตนเฉพาะ (ผู้ใช้หรือกลุ่ม) |
IMAPFolder | คลาสนี้ใช้โฟลเดอร์ IMAP |
IMAPFolder.FetchProfileItem | นี่คือคลาสสำหรับการดึงข้อมูลส่วนหัว |
IMAPMessage | คลาสนี้ใช้อ็อบเจ็กต์ ReadableMime |
IMAPMessage.FetchProfileCondition | คลาสนี้ดำเนินการทดสอบที่จะทำกับแต่ละข้อความในโฟลเดอร์ |
IMAPSSLStore | คลาสนี้ให้การเข้าถึงที่เก็บข้อความ IMAP ผ่าน SSL |
IMAPStore | คลาสนี้ให้การเข้าถึงที่เก็บข้อความ IMAP |
สิทธิ | คลาสนี้แสดงถึงชุดของสิทธิ์สำหรับตัวระบุการพิสูจน์ตัวตน (เช่นผู้ใช้หรือกลุ่ม) |
สิทธิขวา | ชั้นในนี้แสดงถึงสิทธิส่วนบุคคล |
SortTerm | เกณฑ์การจัดเรียงเฉพาะตามที่กำหนดโดย RFC 5256 |
บางจุดที่ควรสังเกตเหนือผู้ให้บริการนี้:
ผู้ให้บริการนี้รองรับทั้งโปรโตคอล IMAP4 และ IMAP4rev1
IMAPStore ที่เชื่อมต่อจะรักษาพูลของอ็อบเจ็กต์โปรโตคอล IMAP เพื่อใช้ในการสื่อสารกับเซิร์ฟเวอร์ IMAP เมื่อโฟลเดอร์ถูกเปิดขึ้นและจำเป็นต้องใช้อ็อบเจ็กต์โปรโตคอล IMAP ใหม่ IMAPStore จะจัดเตรียมจากพูลการเชื่อมต่อหรือสร้างขึ้นหากไม่มี เมื่อปิดโฟลเดอร์อ็อบเจ็กต์โปรโตคอล IMAP จะถูกส่งกลับไปยังพูลการเชื่อมต่อหากพูล
อ็อบเจ็กต์ IMAPStore ที่เชื่อมต่ออาจหรือไม่อาจรักษาอ็อบเจ็กต์โปรโตคอล IMAP แยกต่างหากที่ให้การเชื่อมต่อเฉพาะกับเซิร์ฟเวอร์ IMAP
ผู้ให้บริการโปรโตคอล IMAP สนับสนุนคุณสมบัติต่อไปนี้ซึ่งอาจถูกตั้งค่าในวัตถุ JavaMail Session คุณสมบัติจะถูกตั้งค่าเป็นสตริงเสมอ ที่Type คอลัมน์อธิบายวิธีการตีความสตริง
ชื่อ | ประเภท | คำอธิบาย |
---|---|---|
mail.imap.user | สตริง | ชื่อผู้ใช้เริ่มต้นสำหรับ IMAP |
mail.imap.host | สตริง | เซิร์ฟเวอร์ IMAP ที่จะเชื่อมต่อ |
mail.imap.port | int | พอร์ตเซิร์ฟเวอร์ IMAP ที่จะเชื่อมต่อหากเมธอด connect () ไม่ได้ระบุอย่างชัดเจน ค่าเริ่มต้นคือ 143 |
mail.imap.partialfetch | บูลีน | ควบคุมว่าควรใช้ความสามารถในการดึงข้อมูลบางส่วนของ IMAP หรือไม่ ค่าเริ่มต้นเป็นจริง |
mail.imap.fetchsize | int | ขนาดการดึงข้อมูลบางส่วนเป็นไบต์ ค่าเริ่มต้นคือ 16K |
mail.imap.ignorebodystructuresize | บูลีน | การตอบสนองของ IMAP BODYSTRUCTURE ประกอบด้วยขนาดที่แน่นอนของแต่ละส่วนของร่างกาย โดยปกติขนาดนี้จะใช้เพื่อกำหนดปริมาณข้อมูลที่จะดึงสำหรับแต่ละส่วนของร่างกาย ค่าเริ่มต้นเป็นเท็จ |
mail.imap.connectiontimeout | int | ค่าการหมดเวลาของการเชื่อมต่อซ็อกเก็ตเป็นมิลลิวินาที ค่าเริ่มต้นคือการหมดเวลาไม่สิ้นสุด |
mail.imap.timeout | int | ค่าการหมดเวลาของ Socket I / O หน่วยเป็นมิลลิวินาที ค่าเริ่มต้นคือการหมดเวลาไม่สิ้นสุด |
mail.imap.statuscachetimeout | int | ค่าการหมดเวลาเป็นมิลลิวินาทีสำหรับแคชของการตอบสนองคำสั่ง STATUS ค่าเริ่มต้นคือ 1,000 (1 วินาที) Zero ปิดการใช้งานแคช |
mail.imap.appendbuffersize | int | ขนาดสูงสุดของข้อความที่จะบัฟเฟอร์ในหน่วยความจำเมื่อผนวกเข้ากับโฟลเดอร์ IMAP |
mail.imap.connectionpoolsize | int | จำนวนการเชื่อมต่อสูงสุดที่พร้อมใช้งานในพูลการเชื่อมต่อ ค่าเริ่มต้นคือ 1 |
mail.imap.connectionpooltimeout | int | ค่าการหมดเวลาเป็นมิลลิวินาทีสำหรับการเชื่อมต่อพูลการเชื่อมต่อ ค่าเริ่มต้นคือ 45000 (45 วินาที) |
mail.imap.separatestoreconnection | บูลีน | ตั้งค่าสถานะเพื่อระบุว่าจะใช้การเชื่อมต่อที่เก็บเฉพาะสำหรับคำสั่งร้านค้าหรือไม่ ค่าเริ่มต้นเป็นเท็จ |
mail.imap.auth.login.disable | บูลีน | ถ้าเป็นจริงให้ป้องกันการใช้คำสั่ง AUTHENTICATE LOGIN ที่ไม่ได้มาตรฐานแทนที่จะใช้คำสั่ง LOGIN ธรรมดา ค่าเริ่มต้นเป็นเท็จ |
mail.imap.auth.plain.disable | บูลีน | ถ้าเป็นจริงให้ป้องกันการใช้คำสั่ง AUTHENTICATE PLAIN ค่าเริ่มต้นเป็นเท็จ |
mail.imap.auth.ntlm.disable | บูลีน | ถ้าเป็นจริงให้ป้องกันการใช้คำสั่ง AUTHENTICATE NTLM ค่าเริ่มต้นเป็นเท็จ |
mail.imap.proxyauth.user | สตริง | หากเซิร์ฟเวอร์รองรับส่วนขยาย PROXYAUTH คุณสมบัตินี้จะระบุชื่อของผู้ใช้ที่จะดำเนินการ พิสูจน์ตัวตนกับเซิร์ฟเวอร์โดยใช้ข้อมูลประจำตัวของผู้ดูแลระบบ หลังจากการพิสูจน์ตัวตนผู้ให้บริการ IMAP จะออกคำสั่ง PROXYAUTH ด้วยชื่อผู้ใช้ที่ระบุในคุณสมบัตินี้ |
mail.imap.localaddress | สตริง | ที่อยู่ภายในเครื่อง (ชื่อโฮสต์) ที่จะผูกกับเมื่อสร้างซ็อกเก็ต IMAP ค่าดีฟอลต์คือแอดเดรสที่เลือกโดยคลาส Socket |
mail.imap.localport | int | หมายเลขพอร์ตภายในที่จะเชื่อมโยงเมื่อสร้างซ็อกเก็ต IMAP ค่าดีฟอลต์คือหมายเลขพอร์ตที่เลือกโดยคลาส Socket |
mail.imap.sasl.enable | บูลีน | หากตั้งค่าเป็น true ให้พยายามใช้แพ็กเกจ javax.security.sasl เพื่อเลือกกลไกการพิสูจน์ตัวตนสำหรับล็อกอิน ค่าเริ่มต้นเป็นเท็จ |
mail.imap.sasl.mechanisms | สตริง | รายการที่คั่นด้วยช่องว่างหรือจุลภาคของชื่อกลไก SASL ที่จะพยายามใช้ |
mail.imap.sasl.authorizationid | สตริง | ID การอนุญาตที่จะใช้ในการพิสูจน์ตัวตน SASL หากไม่ได้ตั้งค่า ID การพิสูจน์ตัวตน (ชื่อผู้ใช้) จะถูกใช้ |
mail.imap.sasl.realm | สตริง | ขอบเขตที่จะใช้กับกลไกการพิสูจน์ตัวตน SASL ที่ต้องการขอบเขตเช่น DIGEST-MD5 |
mail.imap.auth.ntlm.domain | สตริง | โดเมนรับรองความถูกต้อง NTLM |
mail.imap.auth.ntlm.flags | int | แฟล็กเฉพาะโปรโตคอล NTLM |
mail.imap.socketFactory | โรงงานซ็อกเก็ต | หากตั้งค่าเป็นคลาสที่ใช้อินเทอร์เฟซ javax.net.SocketFactory คลาสนี้จะถูกใช้เพื่อสร้างซ็อกเก็ต IMAP |
mail.imap.socketFactory.class | สตริง | หากตั้งค่าให้ระบุชื่อของคลาสที่ใช้อินเตอร์เฟส javax.net.SocketFactory คลาสนี้จะใช้ในการสร้างซ็อกเก็ต IMAP |
mail.imap.socketFactory.fallback | บูลีน | หากตั้งค่าเป็น true ความล้มเหลวในการสร้างซ็อกเก็ตโดยใช้คลาสโรงงานของซ็อกเก็ตที่ระบุจะทำให้ซ็อกเก็ตถูกสร้างขึ้นโดยใช้คลาส java.net.Socket ค่าเริ่มต้นเป็นจริง |
mail.imap.socketFactory.port | int | ระบุพอร์ตที่จะเชื่อมต่อเมื่อใช้โรงงานซ็อกเก็ตที่ระบุ พอร์ตดีฟอลต์ถูกใช้เมื่อไม่ได้ตั้งค่า |
mail.imap.ssl.enable | บูลีน | หากตั้งค่าเป็นจริงให้ใช้ SSL เพื่อเชื่อมต่อและใช้พอร์ต SSL ตามค่าเริ่มต้น ค่าเริ่มต้นเป็นเท็จสำหรับโปรโตคอล "imap" และเป็นจริงสำหรับโปรโตคอล "imaps" |
mail.imap.ssl.checkserveridentity | บูลีน | หากตั้งค่าเป็นจริงให้ตรวจสอบข้อมูลประจำตัวเซิร์ฟเวอร์ตามที่ระบุโดย RFC 2595 ค่าดีฟอลต์คือ false |
mail.imap.ssl.trust | สตริง | หากไม่ได้ตั้งค่าและโรงงานซ็อกเก็ตไม่ได้ระบุไว้ให้เปิดใช้งาน MailSSLSocketFactory หากตั้งค่าเป็น "*" โฮสต์ทั้งหมดจะเชื่อถือได้ หากตั้งค่าเป็นรายการโฮสต์ที่คั่นด้วยช่องว่างโฮสต์เหล่านั้นจะเชื่อถือได้ มิฉะนั้นความน่าเชื่อถือจะขึ้นอยู่กับใบรับรองที่เซิร์ฟเวอร์นำเสนอ |
mail.imap.ssl.socketFactory | โรงงานซ็อกเก็ต SSL | หากตั้งค่าเป็นคลาสที่ขยายคลาส javax.net.ssl.SSLSocketFactory คลาสนี้จะถูกใช้เพื่อสร้างซ็อกเก็ต IMAP SSL |
mail.imap.ssl.socketFactory.class | สตริง | หากตั้งค่าให้ระบุชื่อของคลาสที่ขยายคลาส javax.net.ssl.SSLSocketFactory คลาสนี้จะถูกใช้เพื่อสร้างซ็อกเก็ต IMAP SSL |
mail.imap.ssl.socketFactory.port | int | ระบุพอร์ตที่จะเชื่อมต่อเมื่อใช้โรงงานซ็อกเก็ตที่ระบุ หากไม่ได้ตั้งค่าพอร์ตเริ่มต้นจะถูกใช้ |
mail.imap.ssl.protocols | สตริง | ระบุโปรโตคอล SSL ที่จะเปิดใช้งานสำหรับการเชื่อมต่อ SSL ค่าคุณสมบัติเป็นรายการโทเค็นที่คั่นด้วยช่องว่างซึ่งยอมรับได้สำหรับเมธอด javax.net.ssl.SSLSocket.setEnabledProtocols |
mail.imap.starttls.enable | บูลีน | หากเป็นจริงให้เปิดใช้งานคำสั่ง STARTTLS (หากเซิร์ฟเวอร์รองรับ) เพื่อสลับการเชื่อมต่อเป็นการเชื่อมต่อที่มีการป้องกัน TLS ก่อนที่จะออกคำสั่งล็อกอินใด ๆ ค่าเริ่มต้นเป็นเท็จ |
mail.imap.starttls.required | บูลีน | หากเป็นจริงต้องใช้คำสั่ง STARTTLS หากเซิร์ฟเวอร์ไม่รองรับคำสั่ง STARTTLS หรือคำสั่งล้มเหลววิธีการเชื่อมต่อจะล้มเหลว ค่าเริ่มต้นเป็นเท็จ |
mail.imap.socks.host | สตริง | ระบุชื่อโฮสต์ของพร็อกซีเซิร์ฟเวอร์ SOCKS5 ที่จะใช้สำหรับการเชื่อมต่อกับเมลเซิร์ฟเวอร์ |
mail.imap.socks.port | สตริง | ระบุหมายเลขพอร์ตสำหรับพร็อกซีเซิร์ฟเวอร์ SOCKS5 สิ่งนี้ควรใช้เฉพาะในกรณีที่พร็อกซีเซิร์ฟเวอร์ไม่ได้ใช้หมายเลขพอร์ตมาตรฐาน 1080 |
mail.imap.minidletime | int | คุณสมบัตินี้ตั้งค่าความล่าช้าเป็นมิลลิวินาที หากไม่ได้ตั้งค่าเริ่มต้นคือ 10 มิลลิวินาที |
mail.imap.enableimapevents | บูลีน | เปิดใช้งานเหตุการณ์เฉพาะ IMAP พิเศษเพื่อส่งไปยัง ConnectionListener ของร้านค้า หากเป็นจริงการตอบกลับที่ไม่ได้ร้องขอที่ได้รับระหว่างวิธีการไม่ได้ใช้งานของ Store จะถูกส่งเป็น ConnectionEvents ด้วยประเภทของ IMAPStore.RESPONSE ข้อความของเหตุการณ์จะเป็นสตริงการตอบกลับ IMAP แบบดิบ โดยค่าเริ่มต้นกิจกรรมเหล่านี้จะไม่ถูกส่ง |
mail.imap.folder.class | สตริง | ชื่อคลาสของคลาสย่อยของ com.sun.mail.imap.IMAPFolder สามารถใช้คลาสย่อยเพื่อให้การสนับสนุนคำสั่ง IMAP เพิ่มเติม คลาสย่อยต้องมีตัวสร้างสาธารณะของ MyIMAPFolder แบบฟอร์มสาธารณะ (String fullName, ตัวคั่นถ่าน, ที่เก็บ IMAPStore, บูลีน isNamespace) และ MyIMAPFolder สาธารณะ (ListInfo li, ที่เก็บ IMAPStore) |
โดยทั่วไปแอปพลิเคชันไม่ควรใช้คลาสในแพ็คเกจนี้โดยตรง ควรใช้ API ที่กำหนดโดยแพ็คเกจ javax.mail (และแพ็กเกจย่อย) แทน แอปพลิเคชันไม่ควรสร้างอินสแตนซ์ของ IMAPStore หรือ IMAPFolder โดยตรง พวกเขาควรใช้เมธอดเซสชัน getStore เพื่อรับอ็อบเจ็กต์ Store ที่เหมาะสมและจากการรับอ็อบเจ็กต์โฟลเดอร์
ตัวอย่างเพื่อใช้เซิร์ฟเวอร์ IMAP จะแสดงให้เห็นในบทการจัดการโควต้า