ماكرو Outlook VBA لحفظ نسخ رسائل البريد الإلكتروني في مجلد محلي
-
21-12-2019 - |
سؤال
عند إرسال بريد إلكتروني، أرغب في حفظ نسخة من هذا البريد الإلكتروني في المجلد المحلي، مع جميع المرفقات.
لا أعتقد أن هذا ممكن باستخدام قاعدة مخصصة في Outlook ولكن ربما يمكن القيام بذلك باستخدام برنامج نصي لـ VBA؟
أستخدم Outlook وMS Exchange.
المحلول
بالتأكيد يمكن القيام بذلك باستخدام Application_ItemSend
إجراء الحدث لاستدعاء إجراء مخصص سيحفظ رسائل البريد الإلكتروني المرسلة في مجلد محلي.
يتم إدخال هذا الرمز في وحدة "ThisOutlookSession".
Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
Call SaveACopy(Item)
End Sub
Sub SaveACopy(Item As Object)
Const olMsg As Long = 3
Dim m As MailItem
Dim savePath As String
If TypeName(Item) <> "MailItem" Then Exit Sub
Set m = Item
savePath = "c:\users\your_user_name\desktop\" '## Modify as needed
savePath = savePath & m.Subject & Format(Now(), "yyyy-mm-dd-hhNNss")
savePath = savePath & ".msg"
m.SaveAs savePath, olMsg
End Sub
سوف تحتاج إلى التأكد من أن المسار المحدد فريد/إلخ، والمثال أعلاه غير دقيق إلى حد ما.تحتاج أيضًا إلى إزالة أي أحرف غير قانونية لا يمكن وضعها في اسم الملف (شرطة مائلة، خطوط أنابيب، وما إلى ذلك)...
وكبديل لذلك، أقترح ببساطة أرشفة مجلداتك (مجلداتك) بشكل دوري.يمكنك تكوين Outlook لحفظ نسخة من البريد المرسل في مجلد "المرسل"، وبعد ذلك يجب أن تكون قادرًا على أرشفة هذا المجلد؛يبدو حفظ كل عنصر على حدة أقل من المستوى الأمثل.