Menyambungkan ke Server SMTP

Properti berikut perlu diatur saat menyambungkan ke server SMTP dengan dukungan SSL.

Dalam contoh di bawah ini kami menunjukkan cara:

  1. Atur nama pengguna.
  2. Atur kata sandi.
  3. Atur port.
  4. Atur opsi keamanan.

Cuplikan kode berikut menunjukkan cara menyambungkan ke server SMTP yang mendukung SSL.

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

Menyambungkan ke Server melalui Socks Proxy Server

Kadang-kadang kami menggunakan server proxy untuk berkomunikasi dengan dunia luar. Dalam kasus seperti itu, klien email tidak dapat berkomunikasi melalui Internet tanpa menentukan alamat proxy. Aspose.Email menyediakan dukungan untuk versi 4, 4a, dan 5 dari protokol proxy SOCKS. Artikel ini memberikan contoh kerja mengirim email menggunakan server mail proxy. Untuk mengirim email melalui server proxy:

  1. Inisialisasi Proxy dengan informasi yang diperlukan, yaitu alamat proxy, port, dan versi SOCKS.
  2. Inisialisasi SmtpClient dengan alamat host, nama pengguna dan kata sandi, serta pengaturan lainnya.
  3. Atur properti Proxy klien ke Proxy objek yang dibuat sebelumnya.

Cuplikan kode berikut menunjukkan cara menyambungkan ke server melalui proxy server.

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

Menyambungkan ke Server melalui HTTP Proxy Server

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

Sesuaikan Mekanisme Autentikasi

Ambil daftar mekanisme autentikasi yang didukung oleh server SMTP menggunakan getSupportedAuthentication metode dari SmtpClient kelas. Metode ini memungkinkan klien menentukan metode autentikasi mana yang tersedia untuk membangun koneksi aman dengan server. Kemudian, dengan menggunakan setAllowedAuthentication metode yang mengambil (atau mengatur) enumerasi tipe autentikasi yang diizinkan oleh pengguna, pilih mekanisme autentikasi yang paling tepat untuk komunikasi klien-server. Ini memungkinkan Anda mengatur metode autentikasi untuk klien email secara eksplisit.

Contoh kode berikut menunjukkan cara menyesuaikan autentikasi klien email:

smtpClient.setAllowedAuthentication(SmtpKnownAuthenticationType.Login);

Menggunakan autentikasi CRAM-MD5 untuk Terhubung ke Server

Untuk memastikan autentikasi dan komunikasi yang aman dengan server SMTP, Anda dapat menentukan dan memaksa penggunaan CRAM-MD5 sebagai metode autentikasi yang diizinkan untuk klien SMTP. Cuplikan kode berikut menunjukkan cara mengkonfigurasi tipe autentikasi yang diizinkan untuk SmtpClient:

smtpClient.setAllowedAuthentication(SmtpKnownAuthenticationType.CramMD5);

Mengaitkan SMTP Client ke Alamat IP Tertentu pada Host

Kemungkinan sebuah host memiliki banyak port yang tersedia untuk mengirim email tidak dapat dikesampingkan. Dalam kasus seperti itu, mungkin diperlukan untuk mengaitkan klien pengirim email ke port tertentu pada host untuk mengirim email. Hal ini dapat dicapai dengan Aspose.Email API juga menggunakan SmtpClient bindIPEndPoint properti. API SmtpClient dapat diatur untuk menggunakan alamat IP tertentu pada host dengan menentukan Endpoint IP tertentu. Cuplikan kode berikut menunjukkan cara mengaitkan SMTP Client ke Alamat IP Tertentu pada Host.

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

Validasi Kredensial Server Mail Tanpa Mengirim Email

Kadang-kadang diperlukan untuk memverifikasi kredensial tanpa mengirim email. Aspose.Email menyediakan the validateCredentials() metode untuk melakukan operasi ini. Jika validasi berhasil, kode di dalam pernyataan if dijalankan, biasanya digunakan untuk melakukan tindakan lebih lanjut atau mengambil data dari server IMAP. Potongan kode berikut menunjukkan validasi kredensial tanpa mengirim email:

try (SmtpClient smtpClient = new SmtpClient(
        server.SmtpUrl, server.SmtpPort, "username", "password", SecurityOptions.Auto)) {
    smtpClient.setTimeout(4000);

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

Cara Mengatur Timeout untuk Operasi Email

Setiap operasi email memerlukan waktu tergantung pada banyak faktor (penundaan jaringan, ukuran data, kinerja server, dll.). Anda dapat mengatur timeout untuk semua operasi email. Contoh kode di bawah ini menunjukkan cara melakukannya menggunakan Timeout properti. Catatan: Anda tidak seharusnya mengatur nilai besar untuk menghindari penundaan lama dalam aplikasi Anda.

try (SmtpClient smtpClient = new SmtpClient("host", 587, "username", "password", SecurityOptions.SSLExplicit))
{
    smtpClient.setTimeout(60000); // 60 seconds

    // some code...
}