C# 在收到发件人的电子邮件时触发.exe
我已经用.net framework编写了一个C#应用程序。其目的是从在线电子表格应用程序中请求数据,对其进行处理,然后发送回更新的数据 我认为触发exe的最好方法是使用webhooks/回调,但我认为这需要在具有外部IP地址的web服务器上运行我的程序 我不希望定期轮询电子表格应用程序,而是希望该应用程序在某些数据更改时向指定帐户发送电子邮件。收到电子邮件后,VBA代码检查电子邮件是否来自应用程序,然后运行可执行文件 要在收到电子邮件时运行exe,请执行以下操作:C# 在收到发件人的电子邮件时触发.exe,c#,vba,api,outlook,C#,Vba,Api,Outlook,我已经用.net framework编写了一个C#应用程序。其目的是从在线电子表格应用程序中请求数据,对其进行处理,然后发送回更新的数据 我认为触发exe的最好方法是使用webhooks/回调,但我认为这需要在具有外部IP地址的web服务器上运行我的程序 我不希望定期轮询电子表格应用程序,而是希望该应用程序在某些数据更改时向指定帐户发送电子邮件。收到电子邮件后,VBA代码检查电子邮件是否来自应用程序,然后运行可执行文件 要在收到电子邮件时运行exe,请执行以下操作: Private Sub Ap
Private Sub Application_NewMail()
Dim path As String
Dim shl As Variant
path = "C:\Users\***\Desktop\SmartPlugin.exe"
shl = Shell(path, 1)
End Sub
我如何检查寄件人?我在网上找到的例子循环了所有的电子邮件,但我想要的是返回最后收到的电子邮件的方法。让它工作起来了
专用子应用程序\u NewMail()
Dim objN作为名称空间
将objF设置为MAPI文件夹
设置objN=GetNamespace(“MAPI”)
设置objF=objN.GetDefaultFolder(olFolderInbox)
设置mlItems=objF.Items
对“CreationTime”进行排序,对吗
设置mlItem=mlItems.Item(1)
将路径设置为字符串
Dim-shl作为变体
暗SND字符串作为字符串
sndString=CStr(mlItem.SenderName)
如果InStr(1,sndString,“SmartSheet”,vbTextCompare)>0,则
path=“C:\Users\Alex Rose\Desktop\SmartPlugin.exe”
shl=外壳(路径1)
如果结束
端接头
改用应用程序.NewMailEx
事件-它将新消息的条目id作为参数传递。使用该条目id调用Application.Session.GetItemfromID
如果您收到多封电子邮件,则此操作将不起作用-您将继续收到同一封最新电子邮件,可能不是刚刚收到的电子邮件-请参阅上面的我的回答。