סינון אימייל ב‑IMAP - שיטות, קריטריונים ודוגמאות קוד
סינון הודעות בסיסי
ה ImapClient class מספקת את ListMessages() מתודה אשר מקבלת את כל ההודעות מתיבת דואר. כדי לקבל רק הודעות שתואמות תנאי מסוים, השתמש ב- ListMessages() מתודה אשר מקבלת MailQuery כארגומנט. ה- MailQuery המחלקה מספקת מגוון מאפיינים לציון תנאים, לדוגמה תאריך, נושא, שולח, נמען וכד’. הדוגמה הראשונה מדגימה כיצד לסנן הודעות בהתבסס על תאריך ונושא. אנו גם מציגים כיצד לסנן לפי קריטריונים נוספים וכאיך לבנות שאילתות מורכבות יותר. ה-API גם מספק את היכולת להחיל קריטריונים של חיפוש רגיש לרישיות כדי להתאים לקריטריוני סינון מדויקים. בנוסף, ה-API מאפשר לציין את קידוד מחרוזת החיפוש עבור סינון הודעות מתיבת הדואר.
סינון הודעות מתיבת הדואר
- התחבר והתחבר לשרת IMAP
- צור מופע של MailQuery ולקבוע את המאפיינים
- הפעל את ImapClient.ListMessages(MailQuery query) method והעבר את MailQuery עם הפרמטרים כדי לקבל רק הודעות מסוננות.
הקטע הקוד הבא מראה כיצד להתחבר לתיבת דואר IMAP ולקבל הודעות שהגיעו היום ובנושא יש את המילה "newsletter".
סינון הודעות לפי קריטריונים ספציפיים
דוגמות הקוד שלעיל מסנן הודעות בהתבסס על נושא ויום של הדוא"ל. אנו יכולים להשתמש במאפיינים אחרים כדי להגדיר תנאים נתמכים נוספים גם. להלן כמה דוגמאות לקביעת התנאים באמצעות MailQuery. קטעי הקוד הבאים מראים כיצד לסנן אימיילים על‑בסיס:
- תאריך היום.
- טווח תאריכים.
- משולח ספציפי.
- מדומיין ספציפי.
- ממען ספציפי.
תאריך היום
הקטע הקוד הבא מראה כיצד לסנן אימיילים לפי התאריך של היום.
טווח תאריכים
הקטע הקוד הבא מראה כיצד לסנן אימיילים לפי טווח תאריכים.
שולח ספציפי
הקטע הקוד הבא מראה כיצד לסנן אימיילים לשולח ספציפי.
דומיין ספציפי
הקטע הקוד הבא מראה כיצד לסנן אימיילים לדומיין ספציפי.
מקבל ספציפי
הקטע הקוד הבא מראה כיצד לסנן אימיילים לנמען ספציפי.
בניית שאילתות מתקדמת
אם שונים MailQueryBuilder מאפיינים מוגדרים בהצהרות נפרדות, ואז כל התנאים יותאמו. לדוגמה, אם אנחנו רוצים לקבל הודעות בטווח תאריכים וממארח ספציפי, עלינו לכתוב שלוש הצהרות.
שילוב שאילתות עם AND
קוד הדוגמה הבא מציג כיצד לשלב שאילתות עם AND.
שילוב שאילתות עם OR
MailQueryBuilder מספקת את Or() מתודה שלוקחת שני MailQuery מופעים כפרמטרים. הוא מקבל את ההודעות שתואמות לאחד משני התנאים שהוגדרו. הקטע הקוד הבא מראה כיצד לסנן הודעות שהנושא שלהן מכיל "test" או שהן נשלחות מ-"noreply@host.com". הקטע הקוד הבא מראה איך לשלב שאילתות בעזרת OR.
סינון על בסיס InternalDate
ניתן לחלץ הודעות מהשרת בהתבסס על InternalDate, אך לפעמים השרת אינו מחזיר את כל ההודעות כפי שהן נראות בתיבת הדואר נכנסה. הסיבה יכולה להיות אזור זמן של השרת מכיוון שלא תמיד הוא UTC לכל השרתים כגון Gmail. Aspose שולחת פקודות כגון 008 SEARCH ON 4-May-2014 בהתאם ל- פרוטוקול IMAP עם זאת התוצאה יכולה להשתנות עקב הגדרות אזור זמן של השרת. חבר חדש נוסף ב- מידע הודעה Imap כ־ InternalDate שמסייעת יותר בסינון ההודעות. הקטע הקוד הבא מראה את השימוש ב- InternalDate לסינון הודעות.
סינון רגיש לאותיות גדולות/קטנות
הקטע הקוד הבא מראה כיצד להשתמש בסינון אימיילים רגיש לרישיות.
ציין קידוד עבור בניית השאילתא
של ה-API בונה שאילתות Imap הבנאי יכול לשמש לציון הקידוד עבור מחרוזת החיפוש. ניתן גם להגדיר זאת באמצעות ה- DefaultEncoding מאפיין של MailQueryBuilder. הקטע הקוד הבא מראה כיצד לציין קידוד עבור בניית השאילתא.
אפשרויות סינון מותאמות אישית
סינון הודעות עם דגל מותאם
חיפוש מותאם לסינון
לדוגמה, תקן RFC 3501 אינו מאפשר חיפוש הודעות על בסיס קיום קבצים מצורפים. אבל Gmail מספקת הרחבות IMAP שמאפשרים לבצע חיפוש כזה. הקטע הקוד הבא מראה כיצד ליצור שאילתה מתאימה.
ImapQueryBuilder queryBuilder = new ImapQueryBuilder();
queryBuilder.CustomSearch("X-GM-RAW \"has:attachment\"");
MailQuery mailQuery = queryBuilder.GetQuery();
ImapMessageInfoCollection messageInfoCollection = imapClient.ListMessages(mailQuery);
סינון הודעות עם תמיכת דפדוף
ה ImapClient מספקת את היכולת לחפש הודעות מתיבת הדואר ולרשום אותן עם תמיכה בדפדוף. הקטע הקוד הבא מראה כיצד לסנן הודעות עם תמיכה בדפדוף.