Sunucudan Mesajlarla Çalışma
Posta Kutusu Bilgilerini Alma
Posta kutusunun mesaj sayısı ve boyutu gibi bilgileri GetMailBoxSize() ve GetMailBoxInfo() metodlarıyla alabiliriz.
- GetMailBoxSize() metodu, posta kutusunun boyutunu bayt cinsinden döndürür.
- GetMailBoxInfo() metodu, Pop3MailBoxInfo tipinde bir nesne döndürür.
Mesaj sayısını MessageCount özelliği, boyutu ise OccupiedSize özelliği ile almak da mümkündür. Aşağıdaki örnek kod, posta kutusu hakkında bilgi almayı göstermektedir. Şu adımları 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.
Posta Kutusundaki E-posta Sayısını Almak
Aşağıdaki kod snippet’i, bir posta kutusundaki e-posta mesajlarını nasıl sayacağınızı gösterir.
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
Email başlıkları, bir e-posta mesajı hakkında, mesajı tamamen indirmeye karar verip vermeyeceğimizi belirlemek için kullanabileceğimiz bilgiler sunar. Genellikle başlık bilgileri gönderici, konu, alınma tarihi vs. içerir (Email başlıkları Customizing Email Headers bölümünde detaylı açıklanmıştır. Bu konu SMTP ile e-posta göndermeye odaklansa da, başlık içeriği POP3 e-postaları için de geçerlidir). Aşağıdaki örnekler, bir POP3 sunucusundan mesajın sıralama numarası kullanılarak e-posta başlıklarını nasıl alacağınızı gösterir.
E-posta Mesajlarını Alma
Aspose.Email.Pop3 sınıf bileşeni, POP3 sunucusundan e-posta mesajlarını alıp MailMessage bileşenleri yardımıyla bir MailMessage örneğine ayrıştırma yeteneği sağlar. MailMessage sınıfı, e-posta içeriğini manipüle etmek için çeşitli özellikler ve metodlar içerir. Pop3Client sınıfının FetchMessage fonksiyonunu kullanarak, POP3 sunucusundan doğrudan bir MailMessage örneği alabilirsiniz. Aşağıdaki kod snippet’i, POP3 sunucusundan tam bir e-posta mesajının nasıl alınacağını gösterir.
Benzersiz Id Kullanarak Mesaj Özeti Bilgisi Alma
API’nin POP3 İstemcisi, mesajın benzersiz kimliğini (ID) kullanarak sunucudan mesaj özeti bilgilerini alabilir. Bu, mesajı tamamen indirmeden kısa bilgilerine hızlı erişim sağlar. Aşağıdaki kod snippet’i, mesaj özeti bilgisinin nasıl alınacağını gösterir.
Çoklu Bağlantı ile Mesajları Listeleme
Yoğun işlemler için Aspose.Email, ‘use_multi_connection’ özelliğini sunar Pop3Client sınıfı, e-posta alırken birden fazla bağlantı kullanmayı sağlar. Ancak bu modun kullanılması her zaman performans artışı anlamına gelmez. Aşağıdaki kod snippet’i, POP3 sunucusuna bağlanmayı, istemciyi en fazla 5 eşzamanlı bağlantıya izin verecek şekilde yapılandırmayı ve çoklu bağlantı modunu etkinleştirerek sunucudaki mesajların bilgilerini almayı göstermektedir:
import aspose.email as ae
client = ae.clients.pop3.Pop3Client("host", 995, "username", "password", ae.clients.SecurityOptions.AUTO)
client.connections_quantity = 5
client.use_multi_connection = ae.clients.MultiConnectionMode.ENABLE
message_info_coll = client.list_messages()
Sunucudan Mesajları Çekme ve Diske Kaydetme
Ayrıştırmadan Mesajı Diske Kaydet
POP3 sunucusundan e-posta mesajlarını ayrıştırmadan indirmek istiyorsanız, Pop3Client sınıfının SaveMessage fonksiyonunu kullanın. SaveMessage fonksiyonu e-posta mesajını ayrıştırmadığı için FetchMessage fonksiyonundan daha hızlıdır. Aşağıdaki kod snippet’i, bir mesajı sıralama numarasıyla, bu örnekte 1 numarasıyla, nasıl kaydedeceğinizi gösterir. SaveMessage yöntemi, mesajı ayrıştırmadan orijinal EML formatında kaydeder.
Kaydetmeden Önce Mesajı Ayrıştır
İstemci nesnesiyle oluşturulan ‘fetch_message’ metodunu kullanın Pop3Client sınıfı, belirli bir sıralama numarasına sahip mesajı alır. Aşağıdaki kod örneği, belirli bir mesajı alıp, mesajın konu satırını dosya adı olarak kullanarak ‘save’ metodunu msg nesnesi üzerinde çağırarak nasıl kaydedeceğinizi gösterir:
import aspose.email as ae
client = ae.clients.pop3.Pop3Client("host", 995, "username", "password", ae.clients.SecurityOptions.AUTO)
# Fetch the message by its sequence number and Save the message using its subject as the file name
msg = client.fetch_message(1)
msg.save("first-message_out.eml", ae.SaveOptions.default_eml)
Gönderici, Alıcı veya Tarihe Göre Mesaj Filtreleme
Pop3Client sınıfı, POP3 Sunucusuna Bağlanma bölümünde açıklandığı gibi, list_messages() metodunu sağlar; bu metod bir posta kutusundaki tüm mesajları alır. Sadece belirli bir koşula uyan mesajları almak için, MailQuery’i argüman olarak alan aşırı yüklenmiş ListMessages() metodunu kullanın. MailQuery sınıfı, tarih, konu, gönderici, alıcı gibi sorgu koşullarını belirtmek için çeşitli özellikler sunar. MailQueryBuilder sınıfı, arama ifadesini oluşturmak için kullanılır. Önce tüm koşullar ve kısıtlamalar ayarlanır, ardından MailQuery, MailQueryBuilder tarafından oluşturulan sorgu ile doldurulur. MailQuery sınıfı nesnesi, Pop3Client tarafından sunucudan filtrelenmiş bilgiyi çıkarmak için kullanılır. Bu makale, bir posta kutusundan e-posta mesajlarını nasıl filtreleyeceğinizi gösterir. İlk örnek, tarih ve konuya göre mesajları filtrelemeyi gösterir. Ayrıca diğer kriterlere göre filtreleme ve daha karmaşık sorgular oluşturmayı da gösterir. Ayrıca, belirli e-postaları posta kutusundan almak için Tarih ve Saat filtresinin uygulanması da gösterilmektedir. Ek olarak, büyük‑küçük harf duyarlı filtrelemenin nasıl uygulanacağını da gösterir.
Posta Kutusundan Mesajları Filtreleme
Bir posta kutusundan mesajları filtrelemek için:
- Bir POP3 sunucusuna bağlanın ve oturum açın.
- MailQuery’nin bir örneğini oluşturun ve istediğiniz özellikleri ayarlayın.
- Pop3Client.list_messages(MailQuery query) metodunu çağırın ve parametre olarak MailQuery’i geçirerek yalnızca filtrelenmiş mesajları alın.
Aşağıdaki kod snippet’i, bir POP3 posta kutusuna bağlanıp, bugün gelen ve konu satırında "newsletter" kelimesi bulunan mesajları nasıl alacağınızı gösterir.
Belirli Kriterlere Uyan Mesajları Alma
Aspose.Email, e-posta mesajlarını sorgulamak ve filtrelemek için karmaşık arama kriterleri oluşturmayı da mümkün kılar. Bu amaçla şu öğeyi kullanın: MailQueryBuilder sınıfı ve özellikleri. Çekme kriterleri aşağıdaki gibidir:
- Teslim tarihine göre mesajları getir.
- Bir aralık içinde mesajları getir.
- Belirli bir göndericiden mesajları getir.
- Belirli bir alan adından mesajları getir.
- Belirli bir alıcıya mesajları getir.
Bugünün tarihi
Teslim tarihine göre mesaj getirmek için, aşağıdaki kod örneğinde gösterildiği gibi ‘internal_date’ özelliğini kullanın:
import aspose.email as ae
from datetime import datetime
builder = ae.tools.search.MailQueryBuilder()
builder.internal_date.on(datetime.now())
Tarih aralığı
Tarih aralığında mesaj getirmek için, aşağıdaki kod örneğinde gösterildiği gibi aynı ‘internal_date’ özelliğini kullanarak tarih aralığını belirtin:
import aspose.email as ae
from datetime import datetime, timedelta
builder = ae.tools.search.MailQueryBuilder()
# Emails that arrived in last 7 days
builder.internal_date.before(datetime.now())
builder.internal_date.since(datetime.today() - timedelta(days=7))
Belirli Gönderici
Belirli bir göndericiden mesaj getirmek için, aşağıdaki kod örneğinde gösterildiği gibi ‘from_address’ özelliğini kullanın:
import aspose.email as ae
builder = ae.tools.search.MailQueryBuilder()
builder.from_address.contains("saqib.razzaq@127.0.0.1")
Belirli alan adı
Belirli bir alan adından mesaj getirmek için, aşağıdaki kod örneğinde gösterildiği gibi ‘from_address’ özelliğini kullanın:
import aspose.email as ae
builder = ae.tools.search.MailQueryBuilder()
builder.from_address.contains("SpecificHost.com")
Belirli alıcı
Belirli bir alıcıya mesaj getirmek için, aşağıdaki kod örneğinde gösterildiği gibi ’to’ özelliğini kullanın:
import aspose.email as ae
builder = ae.tools.search.MailQueryBuilder()
builder.to.contains("recipient")
Karmaşık Sorgular Oluşturma
Bazen birden fazla sorguyu karşılamak gerekir. Aspose.Email, sorguları birkaç ifadede birleştirerek bunu mümkün kılar. Bir MailQueryBuilder nesneyi ve özelliklerini kullanarak belirli sorgular oluşturun.
Sorguları AND ile Birleştirme
Aşağıdaki kod snippet’i, sorguları AND ile nasıl birleştireceğinizi gösterir.
import aspose.email as ae
from datetime import datetime, timedelta
builder = ae.tools.search.MailQueryBuilder()
builder.internal_date.before(datetime.now())
builder.internal_date.since(datetime.today() - timedelta(days=7))
builder.from_address.contains("SpecificHost.com")
Sorguları OR ile Birleştirme
Aşağıdaki kod snippet’i, sorguları OR (VEYA) operatörüyle nasıl birleştireceğinizi gösterir.
import aspose.email as ae
builder = ae.tools.search.MailQueryBuilder()
builder.either(builder.subject.contains("test"), builder.from_address.contains("noreply@host.com"))
Harf Duyarlı Filtrelerin Uygulanması
API ayrıca, posta kutusundaki e-postaları büyük‑küçük harf duyarlı bir kritere göre filtreleme yeteneği sunar. Aşağıdaki metodlar, StringComparisonField sınıfı, büyük‑küçük harf duyarlı bayrakları belirterek e-postaları arama yeteneği sağlar.
Metot Aspose.Email.StringComparisonField.contains(value, ignore_case) Metot Aspose.Email.StringComparisonField.equals(value, ignore_case) Metot Aspose.Email.StringComparisonField.not_contains(value, ignore_case) Metot Aspose.Email.StringComparisonField.not_equals(value, ignore_case)
Aşağıdaki kod snippet’i, bu yeteneği projenize nasıl uygulayacağınızı gösterir:
import aspose.email as ae
builder = ae.tools.search.MailQueryBuilder()
builder.from_address.contains("noreply@host.com", True)