Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Email Powershell在新电子邮件事件中调用web服务(Exchange 2010)_Email_Powershell_Exchange Server 2010 - Fatal编程技术网

Email Powershell在新电子邮件事件中调用web服务(Exchange 2010)

Email Powershell在新电子邮件事件中调用web服务(Exchange 2010),email,powershell,exchange-server-2010,Email,Powershell,Exchange Server 2010,我有Exchange 2010,我需要使用web服务对每一封新电子邮件运行一个流程,以进入邮箱。该过程基本上将电子邮件添加到内部任务列表中 我可以使用Powershell进行此操作吗 以前从未使用过Powershell,我对它的功能一无所知 如果没有,除了每隔X秒监视邮箱之外,任何人都可以建议其他方法。真的,我希望它基于事件,所以如果没有新邮件,那么没有处理 干杯, Mike我花了几天时间研究这个问题,似乎很难向传入的电子邮件事件添加自定义代码。如果Exchange认为这会减慢电子邮件系统的速度

我有Exchange 2010,我需要使用web服务对每一封新电子邮件运行一个流程,以进入邮箱。该过程基本上将电子邮件添加到内部任务列表中

我可以使用Powershell进行此操作吗

以前从未使用过Powershell,我对它的功能一无所知

如果没有,除了每隔X秒监视邮箱之外,任何人都可以建议其他方法。真的,我希望它基于事件,所以如果没有新邮件,那么没有处理

干杯,
Mike

我花了几天时间研究这个问题,似乎很难向传入的电子邮件事件添加自定义代码。如果Exchange认为这会减慢电子邮件系统的速度,那么许多这样做的方法就会被忽略。()

另一种方法是挂接到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 /remove 1 onarrival SMTPAddRef
最具弹性的方法似乎是创建一个基于计时器的系统,每X分钟检查一次新邮件

虽然不像我希望的那么圆滑,但也可以


希望这对其他人有所帮助。

我花了几天时间研究这一点,似乎很难向传入的电子邮件事件添加自定义代码。如果Exchange认为这会减慢电子邮件系统的速度,那么许多这样做的方法就会被忽略。()

另一种方法是挂接到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 /remove 1 onarrival SMTPAddRef
最具弹性的方法似乎是创建一个基于计时器的系统,每X分钟检查一次新邮件

虽然不像我希望的那么圆滑,但也可以


希望这对其他人有帮助。

您可能希望在服务器上运行此功能?顺便说一句,PowerShell,甚至Exchange命令行管理程序在这里也帮不了什么忙。您需要研究“Exchange Web服务托管API”,例如,这是一个必须使用PowerShell或C#调用的.NET库。我需要调查Exchange提供的事件类型。您可能希望在服务器上运行它?顺便说一句,PowerShell,甚至Exchange命令行管理程序在这里也帮不了什么忙。您需要研究“Exchange Web服务托管API”,例如,这是一个必须使用PowerShell或C#调用的.NET库。我需要调查什么样的事件交换提供。