【问题标题】:vbscript with outdated MS Access and Outlook带有过时 MS Access 和 Outlook 的 vbscript
【发布时间】:2016-05-09 01:51:19
【问题描述】:

我有一个 VBscript,我为访问他们的 Microsoft Access 数据库的人编写了一个 VBscript,如果他们符合特定条件,我会通过 Outlook 向数据库中的人发送电子邮件。我每天都通过任务管理器运行脚本。 脚本的重要部分是完全在后台运行

我在 Windows 7 上使用 2013 版本的 Access 和 Outlook 开发了这个脚本,但是当我去在这个人的计算机上设置代码时,他们有一个过时的 Microsoft Office 版本(我很确定它是2010 或 2007,但我不熟悉任何早于 2013 的 Office 产品)。使用 Office 2013 在 Windows 7 上一切正常

当我运行脚本时,我遇到了两个错误:

  1. Outlook 提示用户说脚本正在尝试自动发送电子邮件并允许它这样做。
  2. 电子邮件没有进入发件箱,因此无法发送(尽管我很确定那是因为我没有正确设置 Outlook 帐户)

我该如何解决这个问题?

代码如下:

Dim connStr, objConn, getNames 
connStr = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=C:\source\to\database.accdb" 
Set objConn = CreateObject("ADODB.Connection") 
objConn.open connStr 
Set rs = objConn.execute("SELECT Fname, Email, VolunteerDate, ID, VolunteerTime FROM people") 
DO WHILE NOT rs.EOF 
getNames = getNames + rs.Fields(1) & "," 
Dim diff 
diff = DateDiff("d",Date,rs.Fields(2)) 

Select Case diff 
Case 0 
Call sendTodayEmail(rs.Fields(1),rs.Fields(2),rs.Fields(0), rs.Fields(4)) 
Case 7  
Call sendWeekEmail(rs.Fields(1),rs.Fields(2),rs.Fields(0), rs.Fields(4)) 
Case else 
End Select 

rs.MoveNext 
Loop 

Sub sendTodayEmail(a,b,c,d) 
dim objOutlk 
dim objMail 
dim strMsg 
const olMailItem = 0 
set objOutlk = createobject("Outlook.Application") 
set objMail = objOutlk.createitem(olMailItem) 
objMail.To = a 
objMail.subject = "Automatic Email" 
strMsg = "Hello " & c & ", this is a reminder that you are scheduled to help today at " & d 
objMail.body = strMsg 
objMail.Send 
End Sub 

Sub sendWeekEmail(a,b,c,d) 
dim objOutlk 
dim objMail 
dim strMsg 
const olMailItem = 0 
set objOutlk = createobject("Outlook.Application") 
set objMail = objOutlk.createitem(olMailItem) 
objMail.To = a 
objMail.subject = "Automatic Email" 
strMsg =  "Hello " & c & ", this is a reminder that you are scheduled to help one week from today at "  & d & "." & vbCrLf & "Scheduled date: " & b & vbCrLf & "Scheduled time: " & d 
objMail.body = strMsg 
objMail.Send 
End Sub 

Set objConn = Nothing 

【问题讨论】:

    标签: email ms-access vbscript outlook


    【解决方案1】:

    如果安装了最新版本的防病毒应用程序,较新版本的 Outlook 将不会显示安全提示。

    否则,您可以选择扩展 MAPI(仅限 C++ 或 Delphi)、Redemption(任何语言 - 我是其作者)或 ClickYes 等产品。

    更多详情请见http://www.outlookcode.com/article.aspx?id=52

    【讨论】:

    • 您能举个例子说明我可以使用扩展 MAPI 做什么吗?
    • 您可以在没有安全提示的情况下调用 IMessage::SubmitMessage()。
    • 我不知道 C 或 C++ 或 Delphi,所以有什么办法可以更改答案以包含代码示例?
    • 使用扩展 MAPI?您只能从 C++ 或 Delphi 访问它。
    • 好的,你能给我一个C++或Delphi的例子吗?我不知道我该怎么处理这个
    猜你喜欢
    • 1970-01-01
    • 2012-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多