SMTP Sunucusuna Bağlanma

SSL desteği olan bir SMTP sunucusuna bağlanırken aşağıdaki özelliklerin ayarlanması gerekir.

Aşağıdaki örneklerde şunları nasıl yapacağınızı gösteriyoruz:

  1. Kullanıcı adı belirleyin.
  2. Parola belirleyin.
  3. Portu ayarlayın.
  4. Güvenlik seçeneğini ayarlayın.

Aşağıdaki kod örneği, SSL etkin SMTP 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

SmtpClient client = new SmtpClient("smtp.gmail.com");

// Set username, password, port, and security options
client.setUsername("your.email@gmail.com");
client.setPassword("your.password");
client.setPort(587);
client.setSecurityOptions(SecurityOptions.SSLExplicit);

Socks Proxy Sunucusu Üzerinden Sunucuya Bağlanma

Bazen dış dünya ile iletişim kurmak için proxy sunucuları kullanırız. Bu gibi durumlarda, mail istemcileri proxy adresi belirtilmeden internete bağlanamaz. Aspose.Email, SOCKS proxy protokolünün 4, 4a ve 5 sürümlerini destekler. Bu makale, bir proxy mail sunucusu kullanarak e-posta gönderimine ilişkin çalışan bir örnek sunar. Bir proxy sunucusu aracılığıyla e-posta göndermek için:

  1. Proxy’yi gerekli bilgilerle başlatın; yani proxy adresi, port ve SOCKS sürümü.
  2. Başlat SmtpClient host adresi, kullanıcı adı ve parola ile birlikte diğer ayarları da içerecek şekilde.
  3. İstemcinin Proxy özelliğini şuna ayarlayın: Proxy daha önce oluşturulan nesne.

Aşağıdaki kod örneği, bir proxy sunucusu aracılığıyla bir sunucuya nasıl bağlanacağınızı gösterir.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java

SmtpClient client = new SmtpClient("smtp.domain.com", "username", "password");
client.setSecurityOptions(SecurityOptions.SSLImplicit);
String proxyAddress = "192.168.203.142"; // proxy address
int proxyPort = 1080; // proxy port
SocksProxy proxy = new SocksProxy(proxyAddress, proxyPort, SocksVersion.SocksV5);
client.setProxy(proxy);
client.send(new MailMessage("sender@domain.com", "receiver@domain.com", "Sending Email via proxy",
        "Implement socks proxy protocol for versions 4, 4a, 5 (only Username/Password authentication)"));

HTTP Proxy Sunucusu Üzerinden 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);
try (SmtpClient client = new SmtpClient("host", 587, "username", "password")) {
    client.setProxy(proxy);
    client.send(new MailMessage("sender@domain.com", "receiver@domain.com", "Sending Email via proxy",
            "Implement socks proxy protocol for versions 4, 4a, 5 (only Username/Password authentication)"));
}

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

SMTP sunucusu tarafından desteklenen kimlik doğrulama mekanizmalarının listesini using the yöntemiyle alın. getSupportedAuthentication metodu SmtpClient 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:

smtpClient.setAllowedAuthentication(SmtpKnownAuthenticationType.Login);

CRAM-MD5 kimlik doğrulaması kullanarak Sunucuya Bağlanma

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

smtpClient.setAllowedAuthentication(SmtpKnownAuthenticationType.CramMD5);

Host Üzerinde Belirli IP Adresine SMTP İstemcisini Bağla

Host’un e-posta gönderimi için birden fazla bağlantı noktasına sahip olma ihtimali göz ardı edilemez. Bu gibi durumlarda, e-posta gönderim istemcisini host üzerindeki belirli bir bağlantı noktasına bağlama ihtiyacı ortaya çıkabilir. Bu, Aspose.Email API’si kullanılarak da using the ile sağlanabilir. SmtpClient bindIPEndPoint özellik. API SmtpClient host üzerinde belirli bir IP Endpoint belirterek belirli bir IP adresi kullanılacak şekilde ayarlanabilir. Aşağıdaki kod örneği, SMTP İstemcisini Host üzerindeki Belirli IP Adresine nasıl bağlayacağınızı gösterir.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java

SmtpClient client = new SmtpClient("smtp.domain.com", // host
        587, // port
        "username", // username
        "password", // password
        SecurityOptions.Auto // Security Options
);
try {
    client.bindIPEndPoint(new BindIPEndPointHandler() {
        public InetSocketAddress invoke(InetSocketAddress remoteEndPoint) {
            return new InetSocketAddress(0);
        }
    });
    client.noop();
} finally {
    client.dispose();
}

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 (SmtpClient smtpClient = new SmtpClient(
        server.SmtpUrl, server.SmtpPort, "username", "password", SecurityOptions.Auto)) {
    smtpClient.setTimeout(4000);

    if (smtpClient.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 (SmtpClient smtpClient = new SmtpClient("host", 587, "username", "password", SecurityOptions.SSLExplicit))
{
    smtpClient.setTimeout(60000); // 60 seconds

    // some code...
}