الاتصال بخادم IMAP
الـ ImapClient تتيح الفئة للتطبيقات إدارة صناديق بريد IMAP باستخدام بروتوكول IMAP. الـ ImapClient تُستخدم الفئة للاتصال بخوادم بريد IMAP وإدارة الرسائل في مجلدات بريد IMAP. للاتصال بخادم IMAP
- إنشاء مثيل من الـ ImapClient فئة.
- حدد اسم المضيف، اسم المستخدم، وكلمة المرور في الـ منشئ ImapClient.
بمجرد ImapClient يتم إنشاء المثيل، فإن النداء التالي لأي عملية باستخدام هذا المثيل سيتصل بالخادم. يوضح المقتطف البرمجي التالي كيفية الاتصال بخادم IMAP باستخدام الخطوات المذكورة أعلاه.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// Create an imapclient with host, user and password
ImapClient client = new ImapClient("localhost", "user", "password");
الاتصال بخادم IMAP مُمكّن بـ SSL
الاتصال بخادم IMAP وصف كيفية الاتصال بخادم IMAP في أربع خطوات بسيطة:
- إنشاء مثيل من الـ ImapClient فئة.
- حدد اسم المضيف، اسم المستخدم، وكلمة المرور.
- حدد المنفذ.
- حدد الـ خيارات الأمان.
العملية للاتصال بخادم IMAP مُمكّن بـ SSL مشابهة ولكنها تتطلب تعيين بعض الخصائص الأخرى:
- تعيين خيارات الأمان إلى SSLImplicit.
يوضح المقتطف البرمجي التالي كيفية
- عيّن اسم مستخدم، كلمة مرور، ومنفذ.
- حدد خيار الأمان.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// Create an instance of the ImapClient class
ImapClient client = new ImapClient("imap.domain.com", 993, "user@domain.com", "pwd");
// Set the security mode to implicit
client.setSecurityOptions(SecurityOptions.SSLImplicit);
الاتصال بالخادم عبر وكيل
عادةً ما تُستخدم خوادم البروكسي للتواصل مع العالم الخارجي. في مثل هذه الحالات، لا يستطيع عملاء البريد التواصل عبر الإنترنت دون تحديد عنوان البروكسي. يوفر Aspose.Email دعمًا لإصدارات 4 و4a و5 من بروتوكول بروكسي SOCKS. يقدم هذا المقال مثالًا عمليًا للوصول إلى صندوق البريد باستخدام خادم بريد بروكسي. للوصول إلى صندوق البريد عبر خادم بروكسي:
- تهيئة SocksProxy مع المعلومات المطلوبة، أي عنوان البروكسي، المنفذ، وإصدار SOCKS.
- تهيئة ImapClient مع عنوان المضيف، اسم المستخدم، كلمة المرور، وأي إعدادات أخرى.
- تعيين العميل SocksProxy خاصية إلى الـ SocksProxy الكائن الذي تم إنشاؤه أعلاه.
يوضح المقتطف البرمجي التالي كيفية استرجاع صندوق البريد عبر خادم بروكسي.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// Connect and log in to IMAP and set SecurityOptions
ImapClient client = new ImapClient("imap.domain.com", "username", "password");
client.setSecurityOptions(SecurityOptions.Auto);
String proxyAddress = "192.168.203.142"; // proxy address
int proxyPort = 1080; // proxy port
SocksProxy proxy = new SocksProxy(proxyAddress, proxyPort, SocksVersion.SocksV5);
// Set the proxy
client.setProxy(proxy);
try {
client.selectFolder("Inbox");
} catch (java.lang.RuntimeException ex) {
System.out.println(ex.getMessage());
}
الاتصال بالخادم عبر بروكسي 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);
final ImapClient client = new ImapClient("imap.domain.com", "username", "password");
try {
client.setProxy(proxy);
client.selectFolder("Inbox");
} finally {
if (client != null)
client.dispose();
}
تخصيص آلية المصادقة
استرجاع قائمة آليات المصادقة التي يدعمها خادم IMAP باستخدام الـ getSupportedAuthentication طريقة الـ ImapClient فئة. تسمح هذه الطريقة للعميل بتحديد طرق المصادقة المتاحة لإنشاء اتصال آمن مع الخادم. ثم، باستخدام الـ setAllowedAuthentication طريقة تحصل (أو تعيين) تعداد أنواع المصادقة المسموح بها من قبل المستخدم، اختر آلية المصادقة الأنسب لتواصل العميل-الخادم. يتيح لك ذلك تعيين طريقة المصادقة لعميل البريد صراحة.
يوضح عينة الكود التالية كيفية تخصيص مصادقة عميل البريد الإلكتروني:
imapClient.setAllowedAuthentication(ImapKnownAuthenticationType.Plain);
الاتصال بالخادم في وضع القراءة فقط
الـ ImapClient الصف يوفر ReadOnly خاصية التي عند تعيينها إلى true، تشير إلى عدم إجراء أي تغييرات على الحالة الدائمة لصندوق البريد. يوضح مثال الشيفرة التالي استخدام ImapClient.ReadOnly خاصية. يحصل على عدد الرسائل غير المقروءة، ثم يجلب رسالة واحدة ثم يحصل مرة أخرى على عدد الرسائل غير المقروءة في وضع القراءة فقط. يظل عدد الرسائل غير المقروءة كما هو مما يدل على أن الحالة الدائمة لصندوق البريد لم تتغير.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
ImapClient imapClient = new ImapClient();
imapClient.setHost("<HOST>");
imapClient.setPort(993);
imapClient.setUsername("<USERNAME>");
imapClient.setPassword("<PASSWORD>");
imapClient.setSupportedEncryption(EncryptionProtocols.Tls);
imapClient.setSecurityOptions(SecurityOptions.SSLImplicit);
ImapQueryBuilder imapQueryBuilder = new ImapQueryBuilder();
imapQueryBuilder.hasNoFlags(ImapMessageFlags.isRead()); /* get unread messages. */
MailQuery query = imapQueryBuilder.getQuery();
imapClient.setReadOnly(true);
imapClient.selectFolder("Inbox");
ImapMessageInfoCollection messageInfoCol = imapClient.listMessages(query);
System.out.println("Initial Unread Count: " + messageInfoCol.size());
if (messageInfoCol.size() > 0) {
imapClient.fetchMessage(messageInfoCol.get_Item(0).getSequenceNumber());
messageInfoCol = imapClient.listMessages(query);
// This count will be equal to the initial count
System.out.println("Updated Unread Count: " + messageInfoCol.size());
} else {
System.out.println("No unread messages found");
}
استخدام المصادقة CRAM-MD5 للاتصال بخادم
لضمان مصادقة آمنة واتصال مؤمن مع خادم IMAP، يمكنك تحديد وإجبار استخدام CRAM-MD5 كطريقة المصادقة المسموحة لعميل IMAP. يوضح المقتطف البرمجي التالي كيفية تهيئة نوع المصادقة المسموح به للـ ImapClient:
imapClient.setAllowedAuthentication(ImapKnownAuthenticationType.CramMD5);
التحقق من اعتماد الخادم البريدي دون إرسال بريد إلكتروني
أحيانًا يكون من الضروري التحقق من الاعتماديات دون إرسال بريد إلكتروني. يوفر Aspose.Email الـ validateCredentials() طريقة لتنفيذ هذه العملية. إذا كانت عملية التحقق ناجحة، يتم تنفيذ الشيفرة داخل عبارة if، عادةً لاستخدامها في إجراءات أخرى أو استرجاع البيانات من خادم IMAP. يوضح المقتطف البرمجي التالي التحقق من الاعتماديات دون إرسال بريد إلكتروني:
try (ImapClient imapClient = new ImapClient(
server.ImapUrl, server.ImapPort, "username", "password", SecurityOptions.Auto)) {
imapClient.setTimeout(4000);
if (imapClient.validateCredentials()) {
// to do something
}
}
كيفية ضبط مهلة لعمليات البريد
كل عملية بريد تستغرق بعض الوقت اعتمادًا على عوامل عديدة (تأخيرات الشبكة، حجم البيانات، أداء الخادم، إلخ). يمكنك ضبط مهلة لجميع عمليات البريد. يُظهر مثال الشيفرة أدناه كيفية القيام بذلك باستخدام الـ مهلة الخاصية. ملاحظة: لا ينبغي ضبط قيم كبيرة لتجنب الانتظار الطويل في تطبيقك.
try (ImapClient imapClient = new ImapClient("host", 993, "username", "password", SecurityOptions.SSLImplicit))
{
imapClient.setTimeout(60000); // 60 seconds
// some code...
}
كيفية تقييد مهلة الترحيب
قد يستخدم عميل IMAP الوضع الآلي لإنشاء اتصال. في هذا الوضع، يمر عميل IMAP عبر جميع معلمات الاتصال الممكنة حتى يتم إنشاء الاتصال. يرسل خادم IMAP عند الاتصال الصحيح سلسلة ترحيب إلى العميل. قد تستخدم الخوادم بدء اتصال SSL/TLS إما ضمنيًا أو صريحًا (START TLS). إذا كان وضع الاتصال غير متطابق (على سبيل المثال، ينتظر الخادم اتصال SSL ضمني لكن العميل يحاول إنشاء اتصال غير مؤمن أو SSL صريح)، فلن يرسل الخادم سلسلة ترحيب وسيستغرق المستخدم وقتًا طويلًا حتى ينتهي مهلة الانتظار وتظهر رسالة الترحيب، ثم ينتقل العميل إلى خيار الاتصال التالي. لتجنب هذه المشكلة، تم إدخال خاصية GreetingTimeout. تتيح لك هذه الخاصية ضبط مهلة سلسلة الترحيب، وتقليل زمن إنشاء الاتصال الآلي.
ImapClient imapClient = new ImapClient();
imapClient.setGreetingTimeout(4000);