התחברות לשרת IMAP
ה ImapClient המחלקה מאפשרת ליישומים לנהל תיבות דואר IMAP באמצעות פרוטוקול IMAP. ה- ImapClient המחלקה משמשת להתחברות לשרתי דואר IMAP ולניהול אימיילים בתיקיות הדואר של IMAP. כדי להתחבר לשרת IMAP
- צור מופע של ImapClient מחלקה.
- ציין את שם המארח, שם המשתמש והסיסמה ב- ImapClient constructor.
לאחר שה ImapClient המותח מתחילה, הקריאה הבאה לכל פעולה באמצעות המותח תתחבר לשרת. הקטע הקוד הבא מראה כיצד להתחבר לשרת IMAP באמצעות השלבים שלמעלה.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// Create an imapclient with host, user and password
ImapClient client = new ImapClient("localhost", "user", "password");
התחברות עם שרת IMAP עם SSL מופעל
התחברות עם שרת IMAP מתואר כיצד להתחבר לשרת IMAP בארבעה שלבים פשוטים:
- צור מופע של ImapClient מחלקה.
- ציין את שם המארח, שם המשתמש והסיסמה.
- ציין את הפורט.
- ציין את אפשרויות אבטחה.
תהליך ההתחברות לשרת IMAP עם SSL דומה אך דורש להגדיר כמה מאפיינים נוספים:
- הגדר אפשרויות אבטחה ל‑SSLImplicit.
הקטע הקוד הבא מראה כיצד
- הגדר שם משתמש, סיסמה ופורט.
- הגדר אפשרות אבטחה.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// Create an instance of the ImapClient class
ImapClient client = new ImapClient("imap.domain.com", 993, "user@domain.com", "pwd");
// Set the security mode to implicit
client.setSecurityOptions(SecurityOptions.SSLImplicit);
התחברות לשרת דרך פרוקסי
שרתים פרוקסי משמשים בדרך כלל לתקשורת עם העולם החיצוני. במקרים כאלה, לקוחות דואר אינם יכולים לתקשר באינטרנט בלי לציין את כתובת הפרוקסי. Aspose.Email תומכת בגרסאות 4, 4a ו‑5 של פרוטוקול SOCKS. מאמר זה מספק דוגמה עובדת של גישה לתיבת דואר באמצעות שרת פרוקסי דואר. כדי לגשת לתיבת הדואר דרך שרת פרוקסי:
- אתחול מתווך Socks עם המידע הדרוש, כלומר כתובת הפרוקסי, פורט וגרסת SOCKS.
- אתחול ImapClient עם כתובת השרת, שם משתמש, סיסמה וכל הגדרה אחרת.
- קבע את הלקוח מתווך Socks מאפיין ל- מתווך Socks אובייקט שנוצר למעלה.
הקטע הקוד הבא מראה כיצד לאחזר תיבת דואר דרך שרת פרוקסי.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// Connect and log in to IMAP and set SecurityOptions
ImapClient client = new ImapClient("imap.domain.com", "username", "password");
client.setSecurityOptions(SecurityOptions.Auto);
String proxyAddress = "192.168.203.142"; // proxy address
int proxyPort = 1080; // proxy port
SocksProxy proxy = new SocksProxy(proxyAddress, proxyPort, SocksVersion.SocksV5);
// Set the proxy
client.setProxy(proxy);
try {
client.selectFolder("Inbox");
} catch (java.lang.RuntimeException ex) {
System.out.println(ex.getMessage());
}
התחברות לשרת דרך פרוקסי HTTP
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
HttpProxy proxy = new HttpProxy("18.222.124.59", 8080);
final ImapClient client = new ImapClient("imap.domain.com", "username", "password");
try {
client.setProxy(proxy);
client.selectFolder("Inbox");
} finally {
if (client != null)
client.dispose();
}
התאמת מנגנון האימות
קבל את רשימת מנגנוני האימות הנתמכים על‑ידי שרת IMAP באמצעות ה- getSupportedAuthentication שיטה של ImapClient מחלקה. מתודה זו מאפשרת ללקוח לקבוע אילו שיטות אימות זמינות להקמת חיבור מאובטח עם השרת. לאחר מכן, באמצעות ה‑ setAllowedAuthentication מתודה שמקבלת (או מגדירה) מונה של סוגי האימות המותרים למשתמש, בחרו במנגנון האימות המתאים ביותר לתקשורת לקוח‑שרת. מאפשר להגדיר באופן מפורש את שיטת האימות עבור לקוח הדואר.
דוגמת הקוד שלהלן מציגה כיצד להתאים אישית את אימות לקוח האימייל:
imapClient.setAllowedAuthentication(ImapKnownAuthenticationType.Plain);
התחברות לשרת במצב קריאה בלבד
ה ImapClient מחלקה מספקת ReadOnly מאפיין שכאשר מוגדר ל‑true, מצביע שאין לבצע שינויים במצב הקבוע של תיבת הדואר. דוגמת הקוד הבאה מדגימה את השימוש ב- ImapClient.ReadOnly מאפיין. הוא מקבל את ספירת ההודעות שלא נקראו, משיג הודעה אחת ולאחר מכן מקבל שוב את ספירת ההודעות שלא נקראו במצב קריאה בלבד. ספירת ההודעות שלא נקראו נשארת אחת, מה שמעיד שהמצב הקבוע של תיבת הדואר לא השתנה.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
ImapClient imapClient = new ImapClient();
imapClient.setHost("<HOST>");
imapClient.setPort(993);
imapClient.setUsername("<USERNAME>");
imapClient.setPassword("<PASSWORD>");
imapClient.setSupportedEncryption(EncryptionProtocols.Tls);
imapClient.setSecurityOptions(SecurityOptions.SSLImplicit);
ImapQueryBuilder imapQueryBuilder = new ImapQueryBuilder();
imapQueryBuilder.hasNoFlags(ImapMessageFlags.isRead()); /* get unread messages. */
MailQuery query = imapQueryBuilder.getQuery();
imapClient.setReadOnly(true);
imapClient.selectFolder("Inbox");
ImapMessageInfoCollection messageInfoCol = imapClient.listMessages(query);
System.out.println("Initial Unread Count: " + messageInfoCol.size());
if (messageInfoCol.size() > 0) {
imapClient.fetchMessage(messageInfoCol.get_Item(0).getSequenceNumber());
messageInfoCol = imapClient.listMessages(query);
// This count will be equal to the initial count
System.out.println("Updated Unread Count: " + messageInfoCol.size());
} else {
System.out.println("No unread messages found");
}
שימוש באימות CRAM‑MD5 לחיבור לשרת
כדי להבטיח אימות ותקשורת מאובטחת עם שרת IMAP, ניתן לציין ולאכוף שימוש ב‑CRAM‑MD5 כשיטה המותרת לאימות עבור לקוח ה‑IMAP. הקטע הקוד הבא מראה כיצד להגדיר את סוג האימות המותר עבור ה- ImapClient:
imapClient.setAllowedAuthentication(ImapKnownAuthenticationType.CramMD5);
אימות אישורי שרת המייל ללא שליחת אימייל
לפעמים יש צורך לאמת אישורים ללא שליחת אימייל. Aspose.Email מספקת את validateCredentials() method לביצוע פעולה זו. אם האימות מצליח, הקוד בתוך תנאי ה‑if מתבצע, בדרך כלל לשימוש לפעולות נוספות או לאחזור נתונים משרת IMAP. קטע הקוד הבא מדגים אימות של אישורים ללא שליחת אימייל:
try (ImapClient imapClient = new ImapClient(
server.ImapUrl, server.ImapPort, "username", "password", SecurityOptions.Auto)) {
imapClient.setTimeout(4000);
if (imapClient.validateCredentials()) {
// to do something
}
}
כיצד להגדיר זמן קצוב לפעולות דואר
כל פעולת דואר לוקחת זמן מסוים בהתאם למגוון גורמים (עיכובי רשת, גודל הנתונים, ביצועי השרת, וכו’). ניתן להגדיר זמן קצוב לכל פעולות הדואר. דוגמת הקוד שלהלן מראה כיצד לבצע זאת באמצעות זמן קצוב מאפיין. הערה: אין להגדיר ערכים גדולים כדי למנוע המתנה ארוכה באפליקציה שלך.
try (ImapClient imapClient = new ImapClient("host", 993, "username", "password", SecurityOptions.SSLImplicit))
{
imapClient.setTimeout(60000); // 60 seconds
// some code...
}
כיצד להגביל את ה‑Greeting Timeout
לקוח ה‑IMAP עשוי להשתמש במצב האוטומטי כדי להקמת חיבור. במצב זה, לקוח ה‑IMAP עובר על כל פרמטרי החיבור האפשריים עד שמתקבל חיבור. שרת IMAP במקרה של חיבור תקין שולח מחרוזת ברכה ללקוח. שרתים יכולים להשתמש בחיבור SSL/TLS עקיף או מפורש (START TLS). אם מצב החיבור אינו תואם (למשל, השרת מחכה לחיבור SSL עקיף אך הלקוח מנסה להקים חיבור SSL לא מאובטח או מפורש), השרת לא ישלח מחרוזת ברכה והמשתמש יחכה זמן רב עד שה‑timeout יגרום לקבלת מחרוזת ברכה, והלקוח יעבור לאופציית חיבור הבאה. כדי למנוע בעיה זו, ה‑GreetingTimeout הוצג. מאפיין זה מאפשר להגדיר את משך הזמן עבור מחרוזת הברכה, ולהקטין את זמן הקמת החיבור האוטומטי.
ImapClient imapClient = new ImapClient();
imapClient.setGreetingTimeout(4000);