Python - IMAP
IMAP เป็นโปรโตคอลการดึงอีเมลซึ่งไม่ดาวน์โหลดอีเมล เพียงแค่อ่านและแสดง สิ่งนี้มีประโยชน์มากในสภาพแบนด์วิธต่ำ ไลบรารีฝั่งไคลเอ็นต์ของ Python เรียกว่าimaplib ใช้สำหรับการเข้าถึงอีเมลผ่านโปรโตคอล imap
IMAP หมายถึง Internet Mail Access Protocol. เสนอครั้งแรกในปี 1986
Key Points:
IMAP อนุญาตให้โปรแกรมไคลเอ็นต์จัดการข้อความอีเมลบนเซิร์ฟเวอร์โดยไม่ต้องดาวน์โหลดบนคอมพิวเตอร์ในระบบ
อีเมลถูกเก็บและดูแลโดยเซิร์ฟเวอร์ระยะไกล
ช่วยให้เราสามารถดำเนินการใด ๆ เช่นดาวน์โหลดลบอีเมลโดยไม่ต้องอ่านจดหมายช่วยให้เราสามารถสร้างจัดการและลบโฟลเดอร์ข้อความระยะไกลที่เรียกว่ากล่องจดหมาย
IMAP ช่วยให้ผู้ใช้สามารถค้นหาอีเมล
ช่วยให้สามารถเข้าถึงกล่องจดหมายหลายกล่องพร้อมกันบนเซิร์ฟเวอร์เมลหลายเครื่อง
คำสั่ง IMAP
ตารางต่อไปนี้อธิบายคำสั่ง IMAP บางคำสั่ง:
SN | คำอธิบายคำสั่ง |
---|---|
1 | IMAP_LOGIN คำสั่งนี้เปิดการเชื่อมต่อ |
2 | CAPABILITY คำสั่งนี้ขอแสดงรายการความสามารถที่เซิร์ฟเวอร์รองรับ |
3 | NOOP คำสั่งนี้ใช้เป็นแบบสำรวจเป็นระยะสำหรับข้อความใหม่หรือการอัปเดตสถานะข้อความในช่วงที่ไม่มีการใช้งาน |
4 | SELECT คำสั่งนี้ช่วยในการเลือกกล่องเมลเพื่อเข้าถึงข้อความ |
5 | EXAMINE เหมือนกับคำสั่ง SELECT ยกเว้นไม่อนุญาตให้เปลี่ยนแปลงกล่องจดหมาย |
6 | CREATE ใช้เพื่อสร้างกล่องจดหมายด้วยชื่อที่ระบุ |
7 | DELETE ใช้เพื่อลบกล่องจดหมายที่มีชื่อที่กำหนดอย่างถาวร |
8 | RENAME ใช้เพื่อเปลี่ยนชื่อกล่องจดหมาย |
9 | LOGOUT คำสั่งนี้แจ้งเซิร์ฟเวอร์ว่าไคลเอ็นต์เสร็จสิ้นด้วยเซสชัน เซิร์ฟเวอร์ต้องส่งการตอบสนองที่ไม่ติดแท็ก BYE ก่อนการตอบสนองตกลงจากนั้นปิดการเชื่อมต่อเครือข่าย |
ตัวอย่าง
ในตัวอย่างด้านล่างเราเข้าสู่ระบบเซิร์ฟเวอร์ gmail ด้วยข้อมูลรับรองผู้ใช้ จากนั้นเราเลือกที่จะแสดงข้อความในกล่องขาเข้า A for loop ใช้เพื่อแสดงข้อความที่ดึงมาทีละรายการและในที่สุดการเชื่อมต่อก็ปิดลง
import imaplib
import pprint
imap_host = 'imap.gmail.com'
imap_user = '[email protected]'
imap_pass = 'password'
# connect to host using SSL
imap = imaplib.IMAP4_SSL(imap_host)
## login to server
imap.login(imap_user, imap_pass)
imap.select('Inbox')
tmp, data = imap.search(None, 'ALL')
for num in data[0].split():
tmp, data = imap.fetch(num, '(RFC822)')
print('Message: {0}\n'.format(num))
pprint.pprint(data[0][1])
break
imap.close()
ขึ้นอยู่กับการกำหนดค่าเมลบ็อกซ์เมลจะแสดงขึ้น