الاتصال بخادم SMTP
يجب تعيين الخصائص التالية عند الاتصال بخادم SMTP يدعم SSL.
- خيارات الأمان
- المنفذ
في الأمثلة أدناه نوضح كيفية:
- عيّن اسم مستخدم.
- عيّن كلمة مرور.
- حدد المنفذ.
- حدد خيار الأمان.
يوضح المقتطف التالي كيفية الاتصال بخادم 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. تقدم هذه المقالة مثالًا عمليًا لإرسال بريد إلكتروني باستخدام خادم وكيل بريد. لإرسال بريد إلكتروني عبر خادم وكيل:
- تهيئة الوكيل بالمعلومات المطلوبة، أي عنوان الوكيل، المنفذ، وإصدار SOCKS.
- تهيئة SmtpClient مع عنوان المضيف، اسم المستخدم، كلمة المرور، وأي إعدادات أخرى.
- عيّن خاصية 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 محدد على المضيف عن طريق تحديد نقطة النهاية 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
}
}
كيفية ضبط مهلة لعمليات البريد
كل عملية بريد تستغرق بعض الوقت اعتمادًا على عوامل عديدة (تأخيرات الشبكة، حجم البيانات، أداء الخادم، إلخ). يمكنك ضبط مهلة لجميع عمليات البريد. يُظهر مثال الشيفرة أدناه كيفية القيام بذلك باستخدام الـ مهلة الخاصية. ملاحظة: لا ينبغي ضبط قيم كبيرة لتجنب الانتظار الطويل في تطبيقك.
try (SmtpClient smtpClient = new SmtpClient("host", 587, "username", "password", SecurityOptions.SSLExplicit))
{
smtpClient.setTimeout(60000); // 60 seconds
// some code...
}