【发布时间】: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 上一切正常
当我运行脚本时,我遇到了两个错误:
- Outlook 提示用户说脚本正在尝试自动发送电子邮件并允许它这样做。
- 电子邮件没有进入发件箱,因此无法发送(尽管我很确定那是因为我没有正确设置 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