excel - كيفية - طريقة ارسال ايميل على اوت لوك



أوتلوك إرسال فئة الحدث (1)

من ما كنت قادرا على تجريب هذه الفئة هو وهمية إلى حد ما. سيكون الاستخدام الصحيح Set itmevt.itm = OutApp.CreateItem(0) . تكمن المشكلة في استخدام الحدث إرسال لاختبار ما إذا كان قد تم إرسال العنصر. لاحظ أن المعلمة إلغاء الحدث. سيتينغ Cancel = True تمنع إرسال البريد الإلكتروني. هذا يخبرنا أنه إذا لم يتم إرسال البريد الإلكتروني حتى بعد اكتمال هذا الحدث. المرسل سوف يعود دائما كاذبة ولن يسبب خطأ من الحدث إرسال.

من ناحية أخرى، إذا كنا اختبار لرؤية MailItem.Sent بعد أن نرسل البريد الإلكتروني فإنه سيتم رمي The item has been moved or deleted. خطأ.

مع العلم أننا يمكن أن تخلق وظيفة من شأنها أن ترسل رسائل البريد الإلكتروني التي سوف تعود صحيح إذا تم إرسال البريد الإلكتروني و فالس إذا لم يكن.

Function SendEmail(addressTo As String, addressCC As String, Subject As String, HTMLBody As String) As Boolean
    Dim OutApp As Object
    Set OutApp = CreateObject("Outlook.Application")

    With OutApp.CreateItem(0)
        .To = addressTo
        .CC = addressCC
        'OutMail.BCC = ""
        .Subject = Subject
        .HTMLBody = HTMLBody
        .Send
        On Error Resume Next

        Call .Sent

        SendEmail = Err.Number <> 0

        If Err.Number = 0 Then
            Debug.Print "Email not sent"
        Else
            Debug.Print "Email sent"
        End If

        On Error GoTo 0

    End With



    Set OutApp = Nothing

End Function


خلفية:
منذ فترة، اكتشفت وحدة نمطية للحصول على الأحداث من التوقعات، على وجه التحديد، كما يوحي العنوان، أنا استخدامه للقبض على البند الحدث إرسال-لمعرفة ما إذا كان قد أرسلت حقا أو لا-. هذا هو وحدة الطبقة نفسها. لا أستطيع أن أتذكر كيف اعتدت أن نسميها (أنا فقط حفظه للمراجع في وقت لاحق، ولكن، حذف الطريق لاستدعائه في بلدي الفرعية الفرعية).

Option Explicit
Public WithEvents itm As Outlook.MailItem
Private Sub itm_Send(Cancel As Boolean)
   Dim blnSent As Boolean
   On Error Resume Next
   blnSent = itm.Sent
   If Err.Number = 0 Then
      Debug.Print "Email not sent"
   Else
    Debug.Print "Email sent")
    End If
End Sub

مشكلة:
لقد نسيت كيف ينبغي أن أسميها في بلدي الفرعية التي ترسل البريد الإلكتروني. لقد حاولت الإعلانات التالية في الأعلى:

Dim itmevt As New CMailItemEvents
Public EmailToSend As Outlook.MailItem

ثم في بلدي الفرعية التي ترسل البريد الإلكتروني:

Set itmevt.itm = EmailToSend

ومع ذلك، لا أستطيع الحصول على الحدث من إرسال أثار في الصف.

أسئلة محددة:
1. كيف يمكنني استدعاء الفئة بشكل صحيح؟
2. كيف يمكنني الحصول على القيمة المرسلة / لم يتم إرسالها بكفاءة (أود أن أكتبها في خلية لتحليلها لاحقا -sent / نوت sent-) فكرت في التحليل إلى وظيفة عامة، والتي يمكن أن نعود القيمة إلى الفرعية التي تسميها، ولكن، لا أعتقد أن هذا هو أفضل نهج





outlook