เราอาจแก้ปัญหานี้ได้โดยการเข้าไปคุยกับ mail server เพื่อดึงเฉพาะ header มาตรวจสอบก่อน แต่ประเด็นของมันจึงอยู่ที่ขนาดของ header แทน ถ้าขนาดไม่กี่ kb ก็คงไม่เป็นไรแต่ถ้าขนาดใหญ่ถึง mb ดังนั้นการแก้ปัญหาด้วยการตรวจสอบจาก header จึงไม่ใช่แนวทางแก้ปัญหาที่ดี
ทางออกของปัญหานี้จะใช้การตรวจจาก uid (unique identify) แทนเพราะมันมีขนาดเล็กไม่ต้องกังวลเรื่องขนาดของข้อมูลตอนส่ง message
ตัวอย่าง (ตัด code มาบางส่วน)
Message[] message = folder.getMessages();
POP3Folder pop3Folder = (POP3Folder)folder;
FetchProfile fetchProfile = new FetchProfile();
fetchProfile.add(UIDFolder.FetchProfileItem.UID);
pop3Folder.fetch(message, fetchProfile);
for (int i = 0; i<message.length; i++) {
String uid = pop3Folder.getUID(message[i]);
if (isNewMessage(uid)) {
// blah blah....
}
}
ส่วนใน method isNewMessage(uid) ก็ส่งค่า uid เข้าไปตรวจจาก uid ที่เรามีอยู่แล้วโดยอาจเก็บไว้ใน database หรือ file system ก็ได้ตามสะดวก
No comments:
Post a Comment