Sunucudan Mesajlarla Çalışma
Posta Kutusu Bilgilerini Alma
Posta kutusunun mesaj sayısı ve boyutu gibi bilgileri şunu kullanarak alabiliriz: getMailBoxSize ve getMailBoxInfo metodları Pop3Client sınıf.
- Bu getMailBoxSize metodu, posta kutusunun bayt cinsinden boyutunu döndürür.
- Bu getMailBoxInfo metodu, tipinde bir nesne döndürür Pop3MailBoxInfo.
Mesaj sayısını elde etmek için ayrıca şunu da kullanabilirsiniz: MessageCount özelliği ve boyutu kullanarak OccupiedSize özellik Pop3MailBoxInfo sınıf. Aşağıdaki örnek kod, posta kutusu hakkında bilgi almanın yolunu gösterir. Şunları gösterir:
- Bir oluştur Pop3Client.
- POP3 sunucusuna bağlan.
- Posta kutusunun boyutunu al.
- Posta kutusu bilgilerini al.
- Posta kutusundaki mesaj sayısını al.
- Dolu boyutu al.
// 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);
Posta Kutusundaki E-posta Sayısını Alma
Aşağıdaki kod snippet’i, bir posta kutusundaki e-posta mesajlarını nasıl sayacağınızı gösterir.
// 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, geliştiricilerin e-postalarla birçok farklı şekilde çalışmasına olanak tanır. Örneğin, bir e-postayı indirmeye karar vermeden önce başlık bilgilerini alabilirler. Ya da bir sunucudan e-postaları alıp, ayrıştırmadan (daha hızlı) ya da ayrıştırarak (daha yavaş) kaydedebilirler. Bu makale, e-postaların nasıl alınacağını ve dönüştürüleceğini gösterir.
E-posta Başlık Bilgilerini Alma
E-posta başlıkları, bir e-posta mesajı hakkında tüm mesajı alıp almayacağımıza karar vermek için kullanabileceğimiz bilgi verir. Tipik olarak başlık bilgileri gönderici, konu, alım tarihi vb. içerir. (E-posta başlıkları ayrıntılı olarak açıklanmıştır E-posta Başlıklarını Özelleştirme. Bu konu özellikle SMTP ile e-posta göndermeyi ele alıyor, ancak e-posta başlığı içerik bilgileri POP3 e-postaları için de geçerlidir). Aşağıdaki örnekler, mesaj sıra numarasına göre POP3 sunucusundan e-posta başlıklarını nasıl alacağınızı gösterir.
// 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();
}
E-posta Mesajlarını Alma
Bu Pop3Client sınıf bileşeni POP3 sunucusundan e-posta mesajlarını alıp, bunları bir MailMessage yardımıyla örnek MailMessage bileşenler. The MailMessage sınıf, e-posta içeriğini manipüle etmek için çeşitli özellikler ve yöntemler içerir. Kullanarak fetchMessage metodu Pop3Client sınıf, bir MailMessage örneği doğrudan POP3 sunucusundan. Aşağıdaki kod örneği, POP3 sunucusundan tam bir e-posta mesajını nasıl alacağınızı gösterir.
// 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();
}
Benzersiz Id Kullanarak Mesaj Özeti Bilgisi Alma
API’nin POP3 İstemcisi, mesajın benzersiz kimliğini kullanarak sunucudan mesaj özeti bilgilerini alabilir. Bu, mesajın tam içeriğini ilk önce almadan kısa bilgiye hızlı erişim sağlar. Aşağıdaki kod örneği, mesaj özeti bilgisini nasıl alacağınızı gösterir.
// 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());
}
Çoklu Bağlantı ile Mesajları Listeleme
Pop3Client sağlar UseMultiConnection ağır işlemler için birden fazla bağlantı oluşturmak amacıyla kullanılabilen özellik. Çoklu bağlantı modunda kullanılacak bağlantı sayısını şu şekilde ayarlayabilirsiniz: Pop3Client.ConnectionsQuantity. Aşağıdaki kod örneği, mesajları listelemek için çoklu bağlantı modunun kullanımını gösterir ve tek bağlantı modu ile performansını karşılaştırır.
// 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);
Sunucudan Mesajları Çekme ve Diske Kaydetme
Ayrıştırmadan Mesajı Diske Kaydet
POP3 sunucusundan e-posta mesajlarını ayrıştırmadan indirmek istiyorsanız, şunu kullanın: Pop3Client sınıf saveMessage fonksiyon. saveMessage fonksiyon, e-posta mesajını ayrıştırmaz, bu yüzden …‘dan daha hızlıdır fetchMessage fonksiyon. Aşağıdaki kod snippet’i, bir mesajı sıra numarasıyla, bu örnekte 1 numarasıyla, nasıl kaydedeceğinizi gösterir. saveMessage metod, mesajı orijinal EML formatında ayrıştırmadan kaydeder.
// 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 ");
Kaydetmeden Önce Mesajı Ayrıştır
Aşağıdaki kod snippet’i, şunu kullanır: Pop3Client fetchMessage metod, POP3 sunucusundan bir mesajı sıra numarasıyla alır ve mesajı konu başlığını dosya adı olarak kullanarak diske kaydeder.
// 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();
}
Gruplu Mesaj Çekme
Pop3Client sağlar fetchMessages metod, Sıra Numaraları ya da Benzersiz ID’nin iterable’ını kabul eder ve bir liste döndürür MailMessage. Aşağıdaki kod snippet’i, şunun kullanımını gösterir: fetchMessages metod, mesajları Sıra Numaraları ve Benzersiz ID ile çekmek için.
// 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());
}
Gönderici, Alıcı veya Tarihe Göre Mesaj Filtreleme
Bu Pop3Client sınıf, açıklanmıştır POP3 Sunucusuna Bağlanma, sağlar listMessages metod, bir posta kutusundaki tüm mesajları alır. Sadece belirli bir koşula uyan mesajları almak için aşırı yüklenmiş olanı kullanın listMessages metod, alır MailQuery argüman olarak. MailQuery sınıf, tarih, konu, gönderici, alıcı vb. gibi sorgu koşullarını belirtmek için çeşitli özellikler sağlar. MailQueryBuilder sınıf, arama ifadesi oluşturmak için kullanılır. Önce tüm koşul ve kısıtlamalar ayarlanır, ardından MailQuery tarafından geliştirilen sorgu ile doldurulur MailQueryBuilder. The MailQuery sınıf nesnesi tarafından kullanılır Pop3Client sunucudan filtrelenmiş bilgileri çıkarmak için. Bu makale, bir posta kutusundaki e-posta mesajlarını nasıl filtreleyeceğinizi gösterir. İlk örnek, tarih ve konuya göre mesajları nasıl filtreleyeceğinizi anlatır. Ayrıca diğer kriterlere göre filtreleme ve daha karmaşık sorgular oluşturma yöntemlerini gösterir. Tarih ve Saat filtresinin, posta kutusundan belirli e-postaları almadaki uygulanmasını da gösterir. Ek olarak, harf duyarlı filtrelemenin nasıl yapılacağını gösterir.
Posta Kutusundan Mesajları Filtreleme
Bir posta kutusundan mesajları filtrelemek için:
- Bir POP3 sunucusuna bağlan ve oturum aç.
- Bir örnek oluştur MailQuery ve istenen özellikleri ayarlayın.
- Şuğu çağırın Pop3Client.listMessages(MailQuery query) method ve geçirin MailQuery parametrelerde sadece filtrelenmiş mesajları almak için.
Aşağıdaki kod snippet’i, POP3 posta kutusuna bağlanıp, bugün gelen ve konu kısmında "newsletter" kelimesi bulunan mesajları almayı gösterir.
// 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.");
Belirli Kriterlere Uyan Mesajları Alma
Yukarıdaki kod örnekleri mesajları e-posta konusu ve tarihine göre filtreler. Diğer özellikleri kullanarak başka desteklenen koşulları da ayarlayabiliriz. Aşağıda, koşulları … kullanarak ayarlamaya dair bazı örnekler bulunmaktadır MailQuery.
Aşağıdaki kod snippet’leri, diğer kriterlere göre e-postaları nasıl filtreleyeceğinizi gösterir:
- Bugün teslim edilen e-postaları bulun.
- Bir aralıkta alınan e-postaları bulun.
- Belirli bir göndericiden gelen e-postaları bulun.
- Belirli bir alandan gönderilen e-postaları bulun.
- Belirli bir alıcıya gönderilen e-postaları bulun.
Bugünün Tarihi
Aşağıdaki kod snippet’i, bugün teslim edilen e-postaları bulmayı gösterir.
// 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());
Tarih Aralığı
Aşağıdaki kod snippet’i, bir tarih aralığında alınan e-postaları bulmayı gösterir.
// 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());
Belirli Gönderici
Aşağıdaki kod snippet’i, belirli bir göndericiden gelen e-postaları bulmayı gösterir.
// 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");
Belirli Alan
Aşağıdaki kod snippet’i, belirli bir alandan gönderilen e-postaları bulmayı gösterir.
// 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");
Belirli Alıcı
Aşağıdaki kod snippet’i, belirli bir alıcıya gönderilen e-postaları bulmayı gösterir.
// 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");
Karmaşık Sorgular Oluşturma
Farklı ise MailQueryBuilder özellikler ayrı ifadelerde ayarlandığında, tüm koşullar eşleşir. Örneğin, bir tarih aralığı ve belirli bir sunucudan gelen mesajları almak istiyorsak üç ifade yazmamız gerekir.
Sorguları AND ile Birleştirme
Aşağıdaki kod snippet’i, sorguları AND ile nasıl birleştireceğinizi gösterir.
// 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());
Sorguları OR ile Birleştirme
MailQueryBuilder sağlar veya iki … alan yöntemi MailQuery örneklerini parametre olarak alır. Belirtilen iki koşuldan herhangi birine uyan mesajları alır. Aşağıdaki kod snippet’i, konu kısmında "test" içeren veya gönderici "noreply@host.com" olan mesajları nasıl filtreleyeceğinizi gösterir. Aşağıdaki kod snippet’i, sorguları OR ile nasıl birleştireceğinizi gösterir.
// 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"));
Harf Duyarlı Filtrelerin Uygulanması
API, harf duyarlı kritere göre posta kutusundaki e-postaları filtreleme yeteneği de sunar. Aşağıdaki metodlar, harf duyarlı bayrağı belirterek e-posta arama imkanı verir.
- Metod StringComparisonField.contains(String value, boolean ignoreCase)
- Metod StringComparisonField.equals(String value, boolean ignoreCase)
- Metod StringComparisonField.notContains(String boolean, bool ignoreCase)
- Metod 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);