Kết nối tới Máy chủ SMTP

Các thuộc tính sau cần được đặt khi kết nối tới máy chủ SMTP có hỗ trợ SSL.

Trong các ví dụ dưới đây chúng tôi sẽ chỉ ra cách:

  1. Đặt tên người dùng.
  2. Đặt mật khẩu.
  3. Đặt cổng.
  4. Đặt tùy chọn bảo mật.

Đoạn mã dưới đây cho bạn thấy cách kết nối tới máy chủ SMTP hỗ trợ 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);

Kết nối tới Máy chủ qua Proxy SOCKS

Đôi khi chúng ta sử dụng máy chủ proxy để giao tiếp với bên ngoài. Trong những trường hợp này, client email không thể kết nối Internet nếu không chỉ định địa chỉ proxy. Aspose.Email hỗ trợ các phiên bản 4, 4a và 5 của giao thức proxy SOCKS. Bài viết này cung cấp một ví dụ thực tế về việc gửi email bằng máy chủ proxy. Để gửi email qua một máy chủ proxy:

  1. Khởi tạo Proxy với thông tin cần thiết, gồm địa chỉ proxy, cổng và phiên bản SOCKS.
  2. Khởi tạo SmtpClient với địa chỉ host, tên người dùng và mật khẩu, cùng bất kỳ cài đặt nào khác.
  3. Đặt thuộc tính Proxy của client thành Proxy đối tượng được tạo trước đó.

Đoạn mã dưới đây cho bạn thấy cách kết nối tới máy chủ thông qua máy chủ proxy.

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

Kết nối tới Máy chủ qua Máy chủ Proxy HTTP

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

Tùy chỉnh Cơ chế Xác thực

Lấy danh sách các cơ chế xác thực được máy chủ SMTP hỗ trợ bằng cách sử dụng getSupportedAuthentication phương thức của SmtpClient lớp. Phương thức này cho phép client xác định những phương thức xác thực nào có sẵn để thiết lập kết nối bảo mật với máy chủ. Sau đó, bằng cách sử dụng setAllowedAuthentication phương thức lấy (hoặc đặt) danh sách các kiểu xác thực mà người dùng cho phép, chọn cơ chế xác thực phù hợp nhất cho giao tiếp client‑server. Điều này cho phép bạn đặt phương thức xác thực cho client mail một cách rõ ràng.

Đoạn mã mẫu dưới đây cho thấy cách tùy chỉnh xác thực client email:

smtpClient.setAllowedAuthentication(SmtpKnownAuthenticationType.Login);

Sử dụng xác thực CRAM-MD5 để Kết nối tới Máy chủ

Để đảm bảo xác thực và giao tiếp bảo mật với máy chủ SMTP, bạn có thể chỉ định và áp dụng việc sử dụng CRAM-MD5 làm phương thức xác thực được phép cho client SMTP. Đoạn mã dưới đây cho thấy cách cấu hình kiểu xác thực được phép cho SmtpClient:

smtpClient.setAllowedAuthentication(SmtpKnownAuthenticationType.CramMD5);

Gắn SMTP Client vào Địa chỉ IP Cụ thể trên Máy chủ

Khả năng một máy chủ có nhiều cổng khả dụng để gửi email không thể loại trừ. Trong những trường hợp như vậy, có thể cần gắn client gửi email vào một cổng cụ thể trên máy chủ để gửi email. Điều này cũng có thể thực hiện được với Aspose.Email API bằng cách sử dụng SmtpClient bindIPEndPoint thuộc tính. API SmtpClient có thể được đặt để sử dụng một địa chỉ IP cụ thể trên máy chủ bằng cách chỉ định IP Endpoint cụ thể. Đoạn mã dưới đây cho bạn thấy cách gắn SMTP Client vào Địa chỉ IP Cụ thể trên Máy chủ.

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

Xác Thực Thông Tin Đăng Nhập Máy Chủ Mail mà Không Gửi Email

Đôi khi cần xác minh thông tin đăng nhập mà không gửi email. Aspose.Email cung cấp validateCredentials() phương thức thực hiện thao tác này. Nếu việc xác thực thành công, đoạn mã bên trong câu lệnh if sẽ được thực thi, thường được dùng để thực hiện các hành động tiếp theo hoặc lấy dữ liệu từ máy chủ IMAP. Đoạn mã sau minh họa việc xác thực thông tin đăng nhập mà không gửi email:

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

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

Cách Đặt Thời Gian Chờ cho Các Thao Tác Mail

Mỗi thao tác mail mất một khoảng thời gian tùy thuộc vào nhiều yếu tố (độ trễ mạng, kích thước dữ liệu, hiệu suất máy chủ, v.v.). Bạn có thể đặt thời gian chờ cho tất cả các thao tác mail. Ví dụ mã dưới đây cho bạn thấy cách thực hiện điều đó bằng cách sử dụng Thời gian chờ thuộc tính. Lưu ý: bạn không nên đặt giá trị quá lớn để tránh thời gian chờ lâu trong ứng dụng của bạn.

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

    // some code...
}