في هذا السياق، يبدو أنك تعمل على كتابة نص برمجي باستخدام VBScript لإرسال إشعار بالبريد الإلكتروني عند وصول ملف إلى مجلد الاختبار. واجهتك صعوبة في إرفاق الملف بالبريد الإلكتروني، خاصة أن اسم الملف ليس ثابتًا ويختلف في كل مرة.
للتعامل مع هذا التحدي، يمكنك استخدام دالة GetFolder
للوصول إلى الملفات في المجلد، ثم استخدام حلقة For Each
للتعامل مع كل ملف على حدة. ستحتاج أيضًا إلى تعديل الجزء المتعلق بإرفاق الملف بالبريد الإلكتروني. إليك تعديل للكود الخاص بك:
vbscriptConst PATH = "F:\Test" Dim fso: Set fso = CreateObject("Scripting.FileSystemObject") Dim folder: Set folder = fso.GetFolder(PATH) If folder.Files.Count <> 0 Then ' تحديد بيانات البريد الإلكتروني Dim strSMTPFrom: strSMTPFrom = "[email protected]" Dim strSMTPTo: strSMTPTo = "[email protected]" Dim strSMTPRelay: strSMTPRelay = "127.0.0.1" Dim strTextBody: strTextBody = "The attached file arrived in Test folder" Dim strSubject: strSubject = "File arrived in Test folder" ' إعداد الرسالة Set oMessage = CreateObject("CDO.Message") oMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 oMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = strSMTPRelay oMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25 oMessage.Configuration.Fields.Update oMessage.Subject = strSubject oMessage.From = strSMTPFrom oMessage.To = strSMTPTo oMessage.TextBody = strTextBody ' تحديد الملفات في المجلد For Each file In folder.Files ' إرفاق كل ملف بالبريد الإلكتروني oMessage.AddAttachment file.Path Next ' إرسال البريد الإلكتروني oMessage.Send End If
هذا التعديل يضمن إرفاق جميع الملفات الموجودة في المجلد بالبريد الإلكتروني. يمكنك ضبط التنسيق وفقًا لاحتياجاتك.
المزيد من المعلومات
بالطبع، دعني أوسع شرحي لتوفير المزيد من المعلومات حول الكود وكيف يعمل:
-
تحديد المجلد والتحقق من وجود الملفات:
- تم تعيين المسار الذي يحتوي على مجلد الاختبار في ثابت
PATH
. - يتم استخدام
CreateObject("Scripting.FileSystemObject")
لإنشاء كائنFileSystemObject
، الذي يُستخدم للتفاعل مع نظام الملفات. GetFolder(PATH)
يستخدم للحصول على كائن يمثل المجلد.- يتم فحص عدد الملفات في المجلد باستخدام
folder.Files.Count
، وإذا كان لديها ملفات، يتم تنفيذ الكود داخل الشرط.
- تم تعيين المسار الذي يحتوي على مجلد الاختبار في ثابت
-
إعداد معلومات البريد الإلكتروني:
- تم تحديد المتغيرات
strSMTPFrom
وstrSMTPTo
وstrSMTPRelay
وstrTextBody
وstrSubject
لتمثيل معلومات البريد الإلكتروني اللازمة. - تم إنشاء كائن
CDO.Message
باستخدامCreateObject("CDO.Message")
لإنشاء الرسالة.
- تم تحديد المتغيرات
-
تكوين إعدادات البريد الإلكتروني:
- تم تكوين بعض إعدادات البريد الإلكتروني باستخدام مجموعة الحقول في
oMessage.Configuration.Fields
. - يتم تعيين
sendusing
إلى 2 لاستخدام البروتوكول الآمن للإرسال. smtpserver
يحدد عنوان خادم SMTP، وsmtpserverport
يحدد رقم منفذ الخادم.
- تم تكوين بعض إعدادات البريد الإلكتروني باستخدام مجموعة الحقول في
-
إرفاق الملفات:
- تم استخدام حلقة
For Each
للتكرار عبر جميع الملفات في المجلد باستخدامfolder.Files
. - في كل تكرار، يتم إضافة الملف إلى الرسالة باستخدام
oMessage.AddAttachment(file.Path)
.
- تم استخدام حلقة
-
إرسال البريد الإلكتروني:
- بعد تكوين الرسالة وإرفاق الملفات، يتم استخدام
oMessage.Send
لإرسال البريد الإلكتروني.
- بعد تكوين الرسالة وإرفاق الملفات، يتم استخدام
هذا الكود يوفر حلاً بسيطاً وفعالاً لإرسال إشعار عبر البريد الإلكتروني عند وصول ملف إلى المجلد المحدد. يمكنك تخصيص المعلومات المتعلقة بالبريد والمجلد حسب احتياجاتك.