اتصال به سرور SMTP

ویژگی‌های زیر باید هنگام اتصال به سرور SMTP با پشتیبانی SSL تنظیم شوند.

در مثال‌های زیر نشان می‌دهیم چگونه:

  1. تنظیم نام کاربری.
  2. تنظیم رمز عبور.
  3. تنظیم پورت.
  4. تنظیم گزینه امنیتی.

قطعه کد زیر نشان می‌دهد چگونه به سرور SMTP با پشتیبانی 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);

اتصال به سرور از طریق پروکسی Socks

گاهی برای ارتباط با دنیای خارج از سرورهای پروکسی استفاده می‌کنیم. در این موارد، مشتریان ایمیل بدون تعیین آدرس پروکسی نمی‌توانند از طریق اینترنت ارتباط برقرار کنند. Aspose.Email پشتیبانی از نسخه‌های 4، 4a و 5 پروتکل پروکسی SOCKS را فراهم می‌کند. این مقاله نمونه‌ی کاربردی ارسال ایمیل با استفاده از سرور پروکسی را ارائه می‌دهد. برای ارسال ایمیل از طریق سرور پروکسی:

  1. پروکسی را با اطلاعات مورد نیاز، یعنی آدرس پروکسی، پورت و نسخه SOCKS راه‌اندازی کنید.
  2. راه‌اندازی SmtpClient با آدرس میزبان، نام کاربری و رمز عبور و هر تنظیم دیگر.
  3. ویژگی 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)"));

اتصال به سرور از طریق سرور پروکسی 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)"));
}

سفارشی‌سازی مکانیزم احراز هویت

دریافت فهرست مکانیزم‌های احراز هویت که توسط سرور SMTP پشتیبانی می‌شوند با استفاده از getSupportedAuthentication متد از SmtpClient کلاس. این متد به کلاینت اجازه می‌دهد تا تعیین کند کدام روش‌های احراز هویت برای برقراری اتصال امن با سرور موجود هستند. سپس، با استفاده از setAllowedAuthentication روشی که فهرست (یا تنظیم) انواع احراز هویت مجاز توسط کاربر را برمی‌گرداند، مکانیزم احراز هویت مناسب‌ترین برای ارتباط کلاینت‑سرور را انتخاب می‌کند. این امکان را می‌دهد تا روش احراز هویت مشتری ایمیل را به‌صورت صریح تنظیم کنید.

نمونه کد زیر نشان می‌دهد چگونه احراز هویت مشتری ایمیل را سفارشی کنید:

smtpClient.setAllowedAuthentication(SmtpKnownAuthenticationType.Login);

استفاده از احراز هویت CRAM-MD5 برای اتصال به یک سرور

برای اطمینان از احراز هویت و ارتباط ایمن با سرور SMTP، می‌توانید استفاده از CRAM-MD5 را به عنوان روش احراز هویت مجاز برای مشتری SMTP مشخص و اعمال کنید. قطعه کد زیر نشان می‌دهد چگونه نوع احراز هویت مجاز را برای SmtpClient:

smtpClient.setAllowedAuthentication(SmtpKnownAuthenticationType.CramMD5);

متصل کردن مشتری SMTP به آدرس IP خاص در میزبان

امکان وجود پورت‌های متعدد در یک میزبان برای ارسال ایمیل نمی‌تواند رد شود. در چنین مواردی ممکن است نیاز به بستن مشتری ارسال ایمیل به یک پورت خاص در میزبان برای ارسال ایمیل‌ها پیش آید. این کار می‌تواند با استفاده از Aspose.Email API نیز با استفاده از SmtpClient bindIPEndPoint ویژگی. API SmtpClient می‌تواند با تعیین IP Endpoint خاص، برای استفاده از یک آدرس IP مشخص در میزبان تنظیم شود. قطعه کد زیر نشان می‌دهد چگونه مشتری SMTP را به آدرس IP خاص در میزبان بایند کنید.

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

اعتبارسنجی اعتبارهای سرور ایمیل بدون ارسال ایمیل

گاهی لازم است اعتبارسنجی اعتبارها بدون ارسال ایمیل انجام شود. Aspose.Email فراهم می‌کند validateCredentials() متد برای انجام این عملیات. اگر اعتبارسنجی موفق باشد، کد داخل شرط if اجرا می‌شود که معمولاً برای انجام اقدامات بیشتر یا دریافت داده‌ها از سرور IMAP استفاده می‌شود. قطعه کد زیر اعتبار اعتبارنامه‌ها را بدون ارسال ایمیل نشان می‌دهد:

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

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

نحوه تنظیم زمان انتظار برای عملیات ایمیل

هر عملیات ایمیل بسته به عوامل متعددی (تاخیرهای شبکه، حجم داده، عملکرد سرور و غیره) مدتی طول می‌کشد. می‌توانید زمان انتظار (Timeout) را برای تمام عملیات ایمیل تنظیم کنید. مثال کد زیر نشان می‌دهد چگونه با استفاده از زمان انتظار ویژگی. نکته: نباید مقادیر بزرگ تنظیم کنید تا از انتظار طولانی در برنامه جلوگیری کنید.

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

    // some code...
}