Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.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
Vba 在outlook电子邮件中嵌入表单并捕获响应_Vba_Outlook_Outlook 2007 - Fatal编程技术网

Vba 在outlook电子邮件中嵌入表单并捕获响应

Vba 在outlook电子邮件中嵌入表单并捕获响应,vba,outlook,outlook-2007,Vba,Outlook,Outlook 2007,我正在努力帮助人们完成他们的工作。因此,每天早上都需要向用户发送一封电子邮件,其中包含一个要批准/拒绝的列表。。。我不想把这封邮件当作警告发送,告诉他们去应用程序履行职责。电子邮件需要能够捕获他们的响应并相应地更新数据库 选项1:将所有项目作为表单嵌入到单个电子邮件正文中,类似于 Code - Description - radiobutton - radio button 111 ABC o Accept o Reject 222 DEF o Accept o Reject

我正在努力帮助人们完成他们的工作。因此,每天早上都需要向用户发送一封电子邮件,其中包含一个要批准/拒绝的列表。。。我不想把这封邮件当作警告发送,告诉他们去应用程序履行职责。电子邮件需要能够捕获他们的响应并相应地更新数据库

选项1:将所有项目作为表单嵌入到单个电子邮件正文中,类似于

Code - Description  - radiobutton - radio button 

111  ABC  o Accept  o Reject
222  DEF  o Accept  o Reject

Submit
提交时,需要调用winforms应用程序,并需要传递代码和接受/拒绝状态。我还没有找到任何解决办法。还需要验证,确保选择了所有适当的单选按钮。有可能吗

选择2:我试图避免投票路线,每个项目将作为一个单独的电子邮件。当用户接受/拒绝时,将向电子邮件发送回复。然后,一些进程将监视该收件箱,并将选择未读邮件并相应地更新数据库。在Microsoft.Office.Interop.Outlook命名空间中使用MailItemClass

var mailItem = (Outlook.MailItem)Application.CreateItem(Outlook.OlItemType.olMailItem);
mailItem.To = "some.address@server.com";
mailItem.Subject = "This is a test";
mailItem.Body = "This is the body of the message.";
mailItem.VotingOptions = "Accept; Reject;";
mailItem.Send();

我相信你所要求的是可能的,但需要付出很多努力才能实现

对于您的方法,我假设这些电子邮件的信息来自数据库。我会写一个宏来询问数据库,创建并发送每封电子邮件给适当的用户

在每个用户的系统上,我都会有一个规则来识别这些电子邮件,并调用一个宏来处理它们。宏将提取电子邮件的内容,将其复制到表单并将控件传递给用户。“提交”按钮将验证用户的选择,并在将控件返回到宏之前将结果保存在全局变量中。在重新获得控制时,宏将更新数据库

这个宏将是大的,我相信它将需要维护。为了保护自己免受恶意软件的攻击,Outlook不提供任何简单的宏导入方法。每次更改宏和表单时,都必须手动将其导入每个用户的系统。除非您有技术能力的用户,否则将由您访问每个系统并进行更新

我会拒绝任何需要在用户系统上编写代码的方法

为了测试另一种方法,我手动创建了以下电子邮件:

然后寄给我自己。当我收到电子邮件时,我按照指示采取了行动。当我收到回复时,它看起来像:

此回复的Html正文中充满了格式信息。你可以从中提取答案,但我相信正文会更容易。为了创建以下内容,我从文本主体开始,用[CR]和[LF]替换了每个回车和换行符,然后添加了一些新行,使其稍微易于阅读

[CR][LF][CR][LF] [CR][LF][CR][LF]From: Tony Dallimore [mailto:a.j.dallimore@MyIsp.com] [CR][LF]Sent: 25 May 2018 14:22[CR][LF]To: 'Tony Dallimore' <a.j.dallimore@MyIsp.com>[CR][LF]Subject: Test email 2[CR][LF][CR][LF] [CR][LF][CR][LF]
Please:[CR][LF][CR][LF] [CR][LF][CR][LF]
1)      Click Reply within the Home tab.[CR][LF][CR][LF]
2)      You may find it helpful to click Pop Out.[CR][LF][CR][LF]
3)      Enter “A” in the Accept column or “R” in the Reject column of every row in the following table.[CR][LF][CR][LF]
4)      Click Send.[CR][LF][CR][LF] [CR][LF][CR][LF]Code[CR][LF][CR][LF]Description[CR][LF][CR][LF]Accept[CR][LF][CR][LF]Reject[CR][LF][CR][LF]
111[CR][LF][CR][LF]ABC[CR][LF][CR][LF]A[CR][LF][CR][LF][CR][LF][CR][LF]
222[CR][LF][CR][LF]DEF[CR][LF][CR][LF][CR][LF][CR][LF]R[CR][LF][CR][LF]
333[CR][LF][CR][LF]GHI[CR][LF][CR][LF]A[CR][LF][CR][LF][CR][LF][CR][LF]
444[CR][LF][CR][LF]JKL[CR][LF][CR][LF]A[CR][LF][CR][LF] [CR][LF][CR][LF]
 [CR][LF][CR][LF] [CR][LF]
您需要第二个宏来处理这些电子邮件,提取响应并更新数据库。没有对用户的系统进行验证,但没有要求他们做任何复杂的事情。如果你每次收到一个不完整的回复时都打电话给他们并大声训斥他们,他们很快就会意识到,如果他们第一次答对了,生活会更愉快

我不知道从VBA访问您的数据库有多困难,但我不认为其他任何事情特别困难


这不是您要求的方法,但我相信这将更容易实施。更重要的是,所有代码都在您的系统上,这将使开发和维护变得更加容易

我有点喜欢这个想法,我会和老板讨论一下,看看他是否会参与实施。@learning…我刚刚想到的另一点是你老板的。如果你从我的方法开始,如果你以后决定改用你的方法,什么都不会浪费。第一个宏与两种方法相同。第二个宏在移动到用户系统时需要额外的代码,但不会丢弃任何现有代码。我的方法将更容易、更快地实施。如果每天发邮件的想法被证明是成功的,那么如果老板认为值得你花时间,你可以把它理顺。