PowerShell Call Web Service في حدث بريد إلكتروني جديد (Exchange 2010)

StackOverflow https://stackoverflow.com/questions/2819735

سؤال

لدي Exchange 2010 وأحتاج إلى تشغيل عملية باستخدام خدمات الويب مقابل كل بريد إلكتروني جديد للوصول إلى صندوق بريد. ستضيف العملية بشكل أساسي البريد الإلكتروني إلى قائمة المهام الداخلية.

هل يمكنني استخدام PowerShell لهذا؟

بعد أن لم أستخدم PowerShell مطلقًا قبل أن لا يكون لدي أدنى فكرة عن قدراتها.

إذا لم يكن بإمكان أي شخص أن يقترح طريقة أخرى للقيام بذلك بخلاف مراقبة صندوق البريد في كل ثوانٍ X. حقا أود أن يعتمد على الحدث ، لذلك إذا لم يكن هناك بريد جديد ، فلا توجد معالجة.

هتاف ، مايك

هل كانت مفيدة؟

المحلول

لقد أمضيت بضعة أيام في النظر في هذا ويبدو أنه من الصعب للغاية إضافة رمز مخصص إلى حدث بريد إلكتروني وارد. وسيتم تجاهل العديد من طرق القيام بذلك إذا اعتقدت Exchange أنها تبطئ نظام البريد الإلكتروني. ((http://www.outlookcode.com/article.aspx؟id=62)

الطريقة الأخرى هي ربط أحداث SMTP التي تعمل ولكنها تشعر بتخليص. للقيام بذلك ، تحتاج إلى كتابة wscript ثم تسجيل ذلك مقابل حدث وصول بريد إلكتروني.

فيما يلي مثال على البرنامج النصي VB لإضافة مرجع عشوائي على كل بريد إلكتروني يأتي عبر SMTP.

<SCRIPT LANGUAGE="VBScript">

Sub IEventIsCacheable_IsCacheable()
    'To implement the interface, and return S_OK implicitly
End Sub

Sub ISMTPOnArrival_OnArrival(ByVal Msg, EventStatus)
    Dim Flds

    randomize()

    set Flds = Msg.Fields
    With Flds
        strSubject = .Item("urn:schemas:httpmail:subject")

        if instr(strSubject, "Ref=") = 0 then
            strSubject = Replace(strSubject, CHR(9), "") & " (Ref=" & hex(replace(timer(), ".", "")) & hex(rnd()) & ")"
            .Item("urn:schemas:httpmail:subject") = strSubject
            .Update
        else
            strSubject = LEFT(strSubject, instr(strSubject, "(Ref=") - 1) & MID(strSubject, instr(instr(strsubject, "(Ref="), strSubject, ")") + 1, Len(strSubject)) & " (Ref=" & hex(replace(timer(), ".", "")) & hex(rnd()) & ")"
            .Item("urn:schemas:httpmail:subject") = strSubject
            .Update
        end if
    End With

    Msg.Datasource.Save

    EventStatus = 0 'Run next sink

End Sub

</SCRIPT>

ثم لتسجيل البرنامج النصي هذا.

Cscript smtpreg.vbs /add 1 onarrival SMTPAddRef CDO.SS_SMTPOnArrivalSink "mail from=*"
Cscript smtpreg.vbs /setprop 1 onarrival SMTPAddRef Sink ScriptName "C:\ENTERPATH\SMTPRef.vbs"

لإلغاء تسجيل البرنامج النصي قم بتشغيل المتابعة ؛

cscript smtpreg.vbs /remove 1 onarrival SMTPAddRef

يبدو أن الطريقة الأكثر مرونة هي إنشاء نظام قائم على مؤقت للتحقق من رسائل بريد جديدة كل X دقيقة.

ليس بقعة كما كنت آمل ولكن سوف تفعل.

أتمنى أن يساعد هذا الآخرين.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top