IMAP Sunucusuna Bağlanma

Bu ImapClient sınıf, uygulamaların IMAP protokolünü kullanarak IMAP posta kutularını yönetmesine izin verir. ImapClient sınıf, IMAP posta sunucularına bağlanmak ve IMAP e-posta klasörlerindeki e-postaları yönetmek için kullanılır. Bir IMAP sunucusuna bağlanmak için

  1. Şunun bir örneğini oluştur ImapClient sınıf.
  2. Ana bilgisayar adını, kullanıcı adını ve şifreyi şunun içinde belirt ImapClient yapıcı.

Bir kez ImapClient örnek başlatıldıktan sonra, bu örnekle yapılan bir sonraki işlem sunucuya bağlanır. Aşağıdaki kod parçacığı, yukarıdaki adımları kullanarak bir IMAP sunucusuna nasıl bağlanılacağını gösterir.

// 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");

SSL Etkin IMAP Sunucusuna Bağlanma

IMAP Sunucusuna Bağlanma bir IMAP sunucusuna dört basit adımda nasıl bağlanılacağını açıkladı:

  1. Şunun bir örneğini oluştur ImapClient sınıf.
  2. Ana bilgisayar adını, kullanıcı adını ve şifreyi belirt.
  3. Portu belirt.
  4. Şunu belirtin: Güvenlik Seçenekleri.

SSL etkin bir IMAP sunucusuna bağlanma süreci benzerdir, ancak birkaç ek özelliği ayarlamanız gerekir:

Aşağıdaki kod parçacığı, nasıl yapılacağını gösterir

  1. Kullanıcı adı, şifre ve port ayarla.
  2. Güvenlik seçeneğini ayarlayın.
// 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);

Proxy Üzerinden Sunucuya Bağlanma

Proxy sunucular, dış dünya ile iletişimde yaygın olarak kullanılır. Bu durumlarda, e-posta istemcileri proxy adresi belirtilmeden internet üzerinden iletişim kuramaz. Aspose.Email, SOCKS proxy protokolünün 4, 4a ve 5. sürümlerini destekler. Bu makale, bir proxy posta sunucusu kullanarak posta kutusuna erişim örneği sunar. Proxy sunucu aracılığıyla posta kutusuna erişmek için:

  1. Başlat SocksProxy gerekli bilgilerle, yani proxy adresi, port ve SOCKS sürümüyle.
  2. Başlat ImapClient host adresi, kullanıcı adı, şifre ve diğer ayarlarla.
  3. İstemciyi ayarla SocksProxy özelliği SocksProxy yukarıda oluşturulan nesne.

Aşağıdaki kod parçacığı, bir proxy sunucusu aracılığıyla posta kutusunun nasıl alınacağını 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 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 Proxy ile Sunucuya Bağlanma

// 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();
}

Kimlik Doğrulama Mekanizmasını Özelleştir

IMAP sunucusunun desteklediği kimlik doğrulama mekanizmalarının listesini şunu kullanarak al getSupportedAuthentication metodu ImapClient sınıf. Bu yöntem, istemcinin sunucu ile güvenli bir bağlantı kurmak için hangi kimlik doğrulama yöntemlerinin mevcut olduğunu belirlemesini sağlar. Ardından, using the setAllowedAuthentication kullanıcı tarafından izin verilen kimlik doğrulama türlerinin enum değerini (alır veya ayarlar) sağlayan yöntem, istemci-sunucu iletişimi için en uygun kimlik doğrulama mekanizmasını seçmenizi sağlar. Bu, posta istemcisi için kimlik doğrulama yöntemini açıkça ayarlamanıza olanak tanır.

Aşağıdaki kod örneği, e-posta istemcisi kimlik doğrulamasını nasıl özelleştireceğinizi gösterir:

imapClient.setAllowedAuthentication(ImapKnownAuthenticationType.Plain);

Sunucuya Okuma‑Sadece Modda Bağlanma

Bu ImapClient sınıf bir … sağlar ReadOnly true olarak ayarlandığında, posta kutusunun kalıcı durumunda değişiklik yapılmaması gerektiğini belirten özelliktir. Aşağıdaki kod örneği, kullanımını gösterir ImapClient.ReadOnly özelliği. Okunmamış mesaj sayısını alır, ardından bir mesaj getirir ve tekrar okuma‑sadece modunda okunmamış mesaj sayısını alır. Okunmamış mesaj sayısı aynı kalır, bu da posta kutusunun kalıcı durumunun değişmediğini gösterir.

// 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 kimlik doğrulaması kullanarak Sunucuya Bağlanma

IMAP sunucusuyla güvenli kimlik doğrulama ve iletişimi sağlamak için, IMAP istemcisi için izin verilen kimlik doğrulama yöntemi olarak CRAM-MD5 kullanımını belirtebilir ve zorlayabilirsiniz. Aşağıdaki kod parçacığı, izin verilen kimlik doğrulama tipini nasıl yapılandıracağınızı gösterir ImapClient:

imapClient.setAllowedAuthentication(ImapKnownAuthenticationType.CramMD5);

E-posta Göndermeden Mail Sunucusu Kimlik Bilgilerini Doğrulama

Bazen e-posta göndermeden kimlik bilgilerini doğrulamak gerekir. Aspose.Email şunu sağlar: validateCredentials() method bu işlemi gerçekleştirmek için kullanılır. Doğrulama başarılı olursa, if ifadesi içindeki kod çalıştırılır; genellikle daha fazla işlem yapmak veya IMAP sunucusundan veri almak için kullanılır. Aşağıdaki kod parçacığı, e-posta göndermeden kimlik bilgilerini doğrulamayı gösterir:

try (ImapClient imapClient = new ImapClient(
        server.ImapUrl, server.ImapPort, "username", "password", SecurityOptions.Auto)) {
    imapClient.setTimeout(4000);

    if (imapClient.validateCredentials()) {
        // to do something
    }
}

E-posta İşlemleri İçin Zaman Aşımı Ayarlama

Her e-posta işlemi, birçok faktöre (ağ gecikmeleri, veri boyutu, sunucu performansı vb.) bağlı olarak bir süre alır. Tüm e-posta işlemleri için bir zaman aşımı ayarlayabilirsiniz. Aşağıdaki kod örneği, bunu şu şekilde yapmanızı gösterir: Zaman Aşımı özellik. Not: uygulamanızda uzun beklemelerden kaçınmak için büyük değerler ayarlamamalısınız.

try (ImapClient imapClient = new ImapClient("host", 993, "username", "password", SecurityOptions.SSLImplicit))
{
    imapClient.setTimeout(60000); // 60 seconds

    // some code...
}

Greeting Zaman Aşımını Nasıl Kısıtlayabilirsiniz

IMAP istemcisi, bağlantı kurmak için otomatik modu kullanabilir. Bu modda, IMAP istemcisi bağlantı kurulana kadar tüm olası bağlantı parametrelerini dener. Doğru bağlantı durumunda bir IMAP sunucusu, istemciye bir karşılama dizesi gönderir. Sunucular, örtük ya da açık (START TLS) SSL/TLS bağlantı başlatma yöntemlerini kullanabilir. Bağlantı modu uyumsuzsa (örneğin sunucu örtük SSL bağlantısı beklerken istemci güvensiz ya da açık SSL bağlantısı kurmaya çalışıyorsa), sunucu karşılama dizesi göndermez ve kullanıcı, zaman aşımına ulaşana kadar uzun süre bekler; ardından istemci bir sonraki bağlantı seçeneğine geçer. Bu sorunu önlemek için GreetingTimeout özelliği getirildi. Bu özellik, karşılama dizesi için zaman aşımını ayarlamanızı ve otomatik bağlantı kurulum süresini kısaltmanızı sağlar.

ImapClient imapClient = new ImapClient();
imapClient.setGreetingTimeout(4000);