עבודה עם הודעות מהשרת

קבלת מידע על תיבת הדואר

אנו יכולים לקבל מידע על תיבת הדואר כגון מספר ההודעות וגודל תיבת הדואר באמצעות ה- getMailBoxSize ו getMailBoxInfo מתודות של ה- Pop3Client מחלקה.

ניתן גם לקבל את מספר ההודעות באמצעות ה- MessageCount מאפיין והגודל באמצעות ה- OccupiedSize מאפיין של Pop3MailBoxInfo מחלקה. קוד הדוגמה הבא מראה כיצד לקבל מידע על תיבת הדואר. הוא מציג כיצד:

  1. צור Pop3Client.
  2. התחבר לשרת POP3.
  3. קבל את הגודל של תיבת הדואר.
  4. קבל מידע על תיבת הדואר.
  5. קבל את מספר ההודעות בתיבת הדואר.
  6. קבל את הגודל הכבוש.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java

Pop3Client client = new Pop3Client();
// Specify host, username, password, Port and SecurityOptions for your client
client.setHost("pop.gmail.com");
client.setUsername("your.username@gmail.com");
client.setPassword("your.password");
client.setPort(995);
client.setSecurityOptions(SecurityOptions.Auto);

// Get the size of the mailbox, Get mailbox info, number of messages in the mailbox
long nSize = client.getMailboxSize();
System.out.println("Mailbox size is " + nSize + " bytes.");
Pop3MailboxInfo info = client.getMailboxInfo();
int nMessageCount = info.getMessageCount();
System.out.println("Number of messages in mailbox are " + nMessageCount);
long nOccupiedSize = info.getOccupiedSize();
System.out.println("Occupied size is " + nOccupiedSize);

קבלת מספר הודעות דוא"ל בתיבת הדואר

קוד הדוגמה הבא מראה כיצד לספור את הודעות הדוא"ל בתיבת הדואר.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
Pop3Client client = new Pop3Client("pop3.server.com", "username", "password");
try {
    client.setSecurityOptions(SecurityOptions.Auto);
    int i = client.getMessageCount();
    System.out.println("Message count: " + i);
} catch (Pop3Exception ex) {
    System.out.println("Error:" + ex.toString());
}

Aspose.Email מאפשר למפתחים לעבוד עם הודעות דוא"ל במגוון דרכים. לדוגמה, הם יכולים לאחזר מידע כותרת לפני קבלת החלטה האם להוריד הודעת דוא"ל. או שהם יכולים לאחזר הודעות משרת ולשמור אותן ללא ניתוח (מהיר יותר) או לאחר ניתוח (איטי יותר). מאמר זה מציג כיצד לאחזר ולהמיר הודעות דוא"ל.

קבלת מידע על כותרות דוא"ל

כותרות דוא"ל יכולות לספק לנו מידע על הודעת דוא"ל שעליו אנו יכולים להשתמש כדי להחליט האם לאחזר את כל ההודעה. בדרך כלל, מידע הכותרת כולל שולח, נושא, תאריך קבלה, וכו’. (כותרות דוא"ל מתוארות בפרוטרוט ב- התאמת כותרות דוא"ל. נושא זה מתמקד במיוחד בשליחת דוא"ל באמצעות SMTP, אך מידע כותרות הדוא"ל נשאר תקף עבור הודעות POP3). הדוגמאות הבאות מראות כיצד לאחזר כותרות דוא"ל משרת POP3 באמצעות מספר הרצף של ההודעה.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// Create an instance of the Pop3Client class
Pop3Client client = new Pop3Client();

// Specify host, username. password, Port and SecurityOptions for your client
client.setHost("pop.gmail.com");
client.setUsername("your.username@gmail.com");
client.setPassword("your.password");
client.setPort(995);
client.setSecurityOptions(SecurityOptions.Auto);
try {
    HeaderCollection headers = client.getMessageHeaders(1);
    for (int i = 0; i < headers.size(); i++) {
        // Display key and value in the header collection
        System.out.print(headers.getKey(i));
        System.out.print(" : ");
        System.out.println(headers.get(i));
    }
} catch (Exception ex) {
    System.out.println(ex.getMessage());
} finally {
    client.dispose();
}

קבלת הודעות דוא"ל

ה Pop3Client רכיב המחלקה מספק את האפשרות לאחזר הודעות דוא"ל משרת POP3 ולנתח אותן ל- MailMessage מופע בעזרת MailMessage רכיבים. ה‑ MailMessage מחלקה מכילה כמה מאפיינים ומתודות למניפולציה על תוכן האימייל. באמצעות fetchMessage שיטה של Pop3Client מחלקה, אתה יכול לקבל MailMessage מופע ישירות מהשרת POP3. הקטע הקוד הבא מציג כיצד לשאוב הודעת אימייל מלאה מהשרת POP3.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// Create an instance of the Pop3Client class
Pop3Client client = new Pop3Client();

// Specify host, username, password, Port and SecurityOptions for your client
client.setHost("pop.gmail.com");
client.setUsername("your.username@gmail.com");
client.setPassword("your.password");
client.setPort(995);
client.setSecurityOptions(SecurityOptions.Auto);
try {
    int messageCount = client.getMessageCount();
    // Create an instance of the MailMessage class and Retrieve message
    MailMessage message;
    for (int i = 1; i <= messageCount; i++) {
        message = client.fetchMessage(i);
        System.out.println("From:" + message.getFrom());
        System.out.println("Subject:" + message.getSubject());
        System.out.println(message.getHtmlBody());
    }
} catch (Exception ex) {
    System.out.println(ex.getMessage());
} finally {
    client.dispose();
}

שילוף מידע מסכם של הודעה באמצעות מזהה ייחודי

לקוח ה‑POP3 של ה‑API יכול לשאוב מידע מסכם של הודעה מהשרת באמצעות מזהה ייחודי של ההודעה. זה מספק גישה מהירה למידע קצר של ההודעה מבלי לשאוב תחילה את ההודעה המלאה מהשרת. הקטע הקוד הבא מציג כיצד לשאוב מידע מסכם של הודעה.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
String uniqueId = "unique id of a message from server";
Pop3Client client = new Pop3Client("host.domain.com", 456, "username", "password");
client.setSecurityOptions(SecurityOptions.Auto);
Pop3MessageInfo messageInfo = client.getMessageInfo(uniqueId);

if (messageInfo != null) {
    System.out.println(messageInfo.getSubject());
    System.out.println(messageInfo.getDate());
}

רישום הודעות עם חיבור מרובה

Pop3Client מספק UseMultiConnection מאפיין שניתן להשתמש בו ליצירת חיבורים מרובים לפעולות כבדות. ניתן גם להגדיר את מספר החיבורים שישמשו במצב מרובה חיבורים באמצעות Pop3Client.ConnectionsQuantity. הקטע הקוד הבא מדגים את השימוש במצב מרובה חיבורים לרישום הודעות ומשווה את ביצועיו למצב חיבור יחיד.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// Create an instance of the Pop3Client class
Pop3Client pop3Client = new Pop3Client();
pop3Client.setHost("<HOST>");
pop3Client.setPort(995);
pop3Client.setUsername("<USERNAME>");
pop3Client.setPassword("<PASSWORD>");

pop3Client.setConnectionsQuantity(5);
pop3Client.setUseMultiConnection(MultiConnectionMode.Enable);
long multiConnectionModeStartTime = System.currentTimeMillis();
Pop3MessageInfoCollection messageInfoCol1 = pop3Client.listMessages();
long multiConnectionModeTimeSpan = System.currentTimeMillis() - multiConnectionModeStartTime;

pop3Client.setUseMultiConnection(MultiConnectionMode.Disable);
long singleConnectionModeStartTime = System.currentTimeMillis();
Pop3MessageInfoCollection messageInfoCol2 = pop3Client.listMessages();
long singleConnectionModeTimeSpan = System.currentTimeMillis() - singleConnectionModeStartTime;

System.out.println("multyConnectionModeTimeSpan: " + multiConnectionModeTimeSpan);
System.out.println("singleConnectionModeTimeSpan: " + singleConnectionModeTimeSpan);
double performanceRelation = singleConnectionModeTimeSpan / multiConnectionModeTimeSpan;
System.out.println("Performance Relation: " + performanceRelation);

הבאת הודעות מהשרת ושמירתן לדיסק

שמירת הודעה לדיסק ללא פירוש

אם ברצונך להוריד הודעות דוא"ל משרת POP3 ללא פירושן, השתמש ב- Pop3Client מחלקה saveMessage פונקציה. ה- saveMessage פונקציה אינה מפענחת את הודעת האימייל ולכן היא מהירה יותר מה- fetchMessage פונקציה. קוד הדוגמה הבא מציג כיצד לשמור הודעה לפי מספר הסדרה שלה, במקרה זה, מספר 1. ה- saveMessage מתודה שומרת את ההודעה בפורמט EML המקורי ללא פירוש.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// The path to the File directory.
String dataDir = "pop3/";
String dstEmail = dataDir + "InsertHeaders.eml";

// Create an instance of the Pop3Client class
Pop3Client client = new Pop3Client();

// Specify host, username, password, Port and SecurityOptions for your client
client.setHost("pop.gmail.com");
client.setUsername("your.username@gmail.com");
client.setPassword("your.password");
client.setPort(995);
client.setSecurityOptions(SecurityOptions.Auto);

try {
    // Save message to disk by message sequence number
    client.saveMessage(1, dstEmail);
    client.dispose();
} catch (Exception ex) {
    System.out.println(ex.getMessage());
}
System.out.println("Retrieved email messages using POP3 ");

פירוש הודעה לפני שמירה

קוד הדוגמה הבא משתמש ב- Pop3Client fetchMessage מתודה לאחזור הודעה משרת POP3 לפי מספר הסדרה שלה, ולאחר מכן לשמור את ההודעה לדיסק תוך שימוש בנושא כשם הקובץ.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// The path to the File directory.
String dataDir = "pop3/";

// Create an instance of the Pop3Client class
Pop3Client client = new Pop3Client();

// Specify host, username and password, Port and SecurityOptions for your client
client.setHost("pop.gmail.com");
client.setUsername("your.username@gmail.com");
client.setPassword("your.password");
client.setPort(995);
client.setSecurityOptions(SecurityOptions.Auto);

try {
    // Fetch the message by its sequence number and Save the message using its subject as the file name
    MailMessage msg = client.fetchMessage(1);
    msg.save(dataDir + "first-message_out.eml", SaveOptions.getDefaultEml());
    client.dispose();
} catch (Exception ex) {
    System.out.println(ex.getMessage());
} finally {
    client.dispose();
}

הבאת הודעות בקבוצות

Pop3Client מספק fetchMessages מתודה המקבלת איטרביל של מספרי סדר או ID ייחודי ומחזירה רשימה של MailMessage. קוד הדוגמה הבא מדגים את השימוש ב- fetchMessages מתודה להבאת הודעות לפי מספרי סדר ו-ID ייחודי.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// Create an instance of the Pop3Client class
Pop3Client pop3Client = new Pop3Client();
pop3Client.setHost("<HOST>");
pop3Client.setPort(995);
pop3Client.setUsername("<USERNAME>");
pop3Client.setPassword("<PASSWORD>");

Pop3MessageInfoCollection messageInfoCol = pop3Client.listMessages();
System.out.println("ListMessages Count: " + messageInfoCol.size());

List<Integer> sequenceNumberAr = new ArrayList<Integer>();
List<String> uniqueIdAr = new ArrayList<String>();
for (Pop3MessageInfo mi : messageInfoCol) {
    sequenceNumberAr.add(mi.getSequenceNumber());
    uniqueIdAr.add(mi.getUniqueId());
}

for (MailMessage m : pop3Client.fetchMessagesBySequences(sequenceNumberAr)) {
    System.out.println("FetchMessages-sequenceNumberAr : " + m.getSubject());
}

for (MailMessage m : pop3Client.fetchMessagesByUids(uniqueIdAr)) {
    System.out.println("FetchMessages-uniqueIdAr : " + m.getSubject());
}

סינון הודעות לפי שולח, נמען או תאריך

ה Pop3Client מחלקה, המתוארת ב- התחברות לשרת POP3, מספקת את listMessages מתודה אשר מקבלת את כל ההודעות מתיבת דואר. כדי לקבל רק הודעות שתואמות תנאי מסוים, השתמש ב- listMessages מתודה אשר מקבלת MailQuery כארגומנט. ה- MailQuery המחלקה מספקת מאפיינים שונים לציון תנאי השאילתה, כגון תאריך, נושא, שולח, נמען ועוד. ה- MailQueryBuilder מחלקה משמשת לבניית הביטוי החיפוש. ראשית, כל התנאים והמגבלות מוגדרים ולאחר מכן MailQuery מתמלא עם השאילתה שפותחה על ידי MailQueryBuilder. ה MailQuery אובייקט המחלקה משמש על ידי Pop3Client להוצאת המידע המסונן מהשרת. מאמר זה מציג כיצד לסנן הודעות דוא"ל מתיבת דואר. הדוגמה הראשונה מציגה סינון הודעות לפי תאריך ונושא. אנו גם מציגים סינון לפי קריטריונים אחרים וכיצד להרכיב שאילתות מורכבות יותר. בנוסף, מוצגת השימוש במסנן תאריך ושעה כדי לקבל את ההודעות הספציפיות מתיבת הדואר. בנוסף, מוצג כיצד להפעיל סינון רגיש לרישיות.

סינון הודעות מתיבת דואר

כדי לסנן הודעות מתיבת דואר:

  1. התחבר והיכנס לשרת POP3.
  2. צור מופע של MailQuery ולקבוע את המאפיינים הרצויים.
  3. הפעל את Pop3Client.listMessages(MailQuery query) method והעבר את MailQuery בפרמטרים כדי לקבל רק את ההודעות המסוננות.

קוד הדוגמה הבא מציג כיצד להתחבר לתיבת דואר POP3 ולקבל הודעות שהגיעו היום ויש במושאן את המילה "newsletter".

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// Connect and log in to POP3
String host = "host";
int port = 110;
String username = "user@host.com";
String password = "password";
Pop3Client client = new Pop3Client(host, port, username, password);

// Set conditions, Subject contains "Newsletter", Emails that arrived today
MailQueryBuilder builder = new MailQueryBuilder();
builder.getSubject().contains("Newsletter");
builder.getInternalDate().on(new Date());
// Build the query and Get list of messages
MailQuery query = builder.getQuery();
Pop3MessageInfoCollection messages = client.listMessages(query);
System.out.println("Pop3: " + messages.size() + " message(s) found.");

קבלת הודעות העונות לקריטריונים ספציפיים

דוגמות הקוד שלעיל מסנן הודעות בהתבסס על נושא ויום של הדוא"ל. אנו יכולים להשתמש במאפיינים אחרים כדי להגדיר תנאים נתמכים נוספים גם. להלן כמה דוגמאות לקביעת התנאים באמצעות MailQuery.

קוד הדוגמאות שלהלן מראה כיצד לסנן הודעות דוא"ל על פי קריטריונים אחרים:

  • מצא הודעות שנמסרו היום.
  • מצא הודעות שהתקבלו בטווח.
  • מצא הודעות משולח ספציפי.
  • מצא הודעות שנשלחו מדומיין ספציפי.
  • מצא הודעות שנשלחו למקבל ספציפי.

תאריך היום

קוד הדוגמה הבא מציג כיצד למצוא הודעות שנמסרו היום.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// Emails that arrived today
MailQueryBuilder builder = new MailQueryBuilder();
builder.getInternalDate().on(new Date());

טווח תאריכים

קוד הדוגמה הבא מראה כיצד למצוא הודעות שהתקבלו בטווח.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// Emails that arrived in last 7 days
Calendar calendar = Calendar.getInstance();

builder.getInternalDate().before(calendar.getTime());
calendar.add(Calendar.DATE, -7);
builder.getInternalDate().since(calendar.getTime());

שולח ספציפי

קוד הדוגמה הבא מראה כיצד למצוא הודעות משולח ספציפי.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// Get emails from specific sender
builder.getFrom().contains("saqib.razzaq@127.0.0.1");

דומיין ספציפי

קוד הדוגמה הבא מציג כיצד למצוא הודעות שנשלחו מדומיין ספציפי.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// Get emails from specific domain
builder.getFrom().contains("SpecificHost.com");

מקבל ספציפי

קוד הדוגמה הבא מראה כיצד למצוא הודעות שנשלחו למקבל ספציפי.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// Get emails sent to specific recipient
builder.getTo().contains("recipient");

בניית שאילתות מורכבות

אם שונים MailQueryBuilder מאפיינים מוגדרים בהצהרות נפרדות, ואז כל התנאים יותאמו. לדוגמה, אם אנחנו רוצים לקבל הודעות בטווח תאריכים וממארח ספציפי, עלינו לכתוב שלוש הצהרות.

שילוב שאילתות עם AND

קוד הדוגמה הבא מציג כיצד לשלב שאילתות עם AND.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// Emails from specific host, get all emails that arrived before today and all emails that arrived since 7 days ago
builder.getFrom().contains("SpecificHost.com");

Calendar calendar = Calendar.getInstance();

builder.getInternalDate().before(calendar.getTime());
calendar.add(Calendar.DATE, -7);
builder.getInternalDate().since(calendar.getTime());

שילוב שאילתות עם OR

MailQueryBuilder מספקת את או מתודה שלוקחת שני MailQuery ‏מופעים כפרמטרים. הוא משיג את ההודעות המתאימות לאחת משתי התנאים המצוינים. קוד הדוגמה הבא מציג כיצד לסנן הודעות שיש בהן "test" בנושא או "noreply@host.com" כשולח. קוד הדוגמה הבא מראה כיצד לשלב שאילתות עם OR.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// Specify OR condition
builder.or(builder.getSubject().contains("test"), builder.getFrom().contains("noreply@host.com"));

החלת מסננים רגישים לרישיות

ה-API גם מספק את היכולת לסנן הודעות דוא"ל מתיבת הדואר בהתבסס על קריטריון רגיש לרישיות. השיטות הבאות מאפשרות לחפש הודעות דוא"ל עם דגל רגיש לרישיות.

  • Method StringComparisonField.contains(String value, boolean ignoreCase)
  • Method StringComparisonField.equals(String value, boolean ignoreCase)
  • Method StringComparisonField.notContains(String boolean, bool ignoreCase)
  • Method StringComparisonField.notEquals(String boolean, bool ignoreCase)
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// IgnoreCase is True
MailQueryBuilder builder1 = new MailQueryBuilder();
builder1.getFrom().contains("tesT", true);
MailQuery query1 = builder1.getQuery();
Pop3MessageInfoCollection messageInfoCol1 = client.listMessages(query1);