Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/279.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
C# 在收到发件人的电子邮件时触发.exe_C#_Vba_Api_Outlook - Fatal编程技术网

C# 在收到发件人的电子邮件时触发.exe

C# 在收到发件人的电子邮件时触发.exe,c#,vba,api,outlook,C#,Vba,Api,Outlook,我已经用.net framework编写了一个C#应用程序。其目的是从在线电子表格应用程序中请求数据,对其进行处理,然后发送回更新的数据 我认为触发exe的最好方法是使用webhooks/回调,但我认为这需要在具有外部IP地址的web服务器上运行我的程序 我不希望定期轮询电子表格应用程序,而是希望该应用程序在某些数据更改时向指定帐户发送电子邮件。收到电子邮件后,VBA代码检查电子邮件是否来自应用程序,然后运行可执行文件 要在收到电子邮件时运行exe,请执行以下操作: Private Sub Ap

我已经用.net framework编写了一个C#应用程序。其目的是从在线电子表格应用程序中请求数据,对其进行处理,然后发送回更新的数据

我认为触发exe的最好方法是使用webhooks/回调,但我认为这需要在具有外部IP地址的web服务器上运行我的程序

我不希望定期轮询电子表格应用程序,而是希望该应用程序在某些数据更改时向指定帐户发送电子邮件。收到电子邮件后,VBA代码检查电子邮件是否来自应用程序,然后运行可执行文件

要在收到电子邮件时运行exe,请执行以下操作:

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

如果您收到多封电子邮件,则此操作将不起作用-您将继续收到同一封最新电子邮件,可能不是刚刚收到的电子邮件-请参阅上面的我的回答。