在Access 2003中使用vba发送邮件时的运行时错误287

时间:2009-08-12 11:44:34

标签: vba outlook-2003

我目前正在编写一个vba宏来发送电子邮件,并且已创建消息,但是在生成错误时不会发送。我目前的代码是:

Function CreateHURMail(Filename)

Dim olApp As Outlook.Application
Dim objMail As Outlook.MailItem
Set olApp = New Outlook.Application
Set objMail = olApp.CreateItem(olMailItem)

With objMail
    .Subject = "Test Message"
    .Body = "Body Text"
    .To = "abc@xyz"
    .Attachments.Add (Filename)
    .Display

    On Error Resume Next
    .Send

    'If Err.Number = 287 Then
    '    MsgBox "Still doesn't work!", vbOKOnly, "DOH!"
    'End If
End With


End Function

有谁知道如何解决这个问题?

提前致谢。

2 个答案:

答案 0 :(得分:3)

在Access中使用DoCmd.SendObject发送电子邮件。例如:

Call DoCmd.SendObject(acSendNoObject, To:="abc@xyz", 
    Subject:="Test Message", MessageText:="Body Text", EditMessage:=true)

您可以发送表格,查询,表格,报告或表格,而不是发送无对象。以这种方式无法附加普通文件。

如果您自动运行Outlook并尝试发送邮件,则会被Outlook捕获。根据Outlook的安全设置,它不允许完全通过自动化发送邮件,如果允许自动化,它会要求用户使用弹出窗口,或者只是发送邮件(小心后者)。

如果由于安全性不允许完全通过自动发送邮件或者因为用户在确认对话框中单击“否”而中止发送邮件,则会发生错误287。

有两种解决方法:禁用安全性(完全或让用户确认发送邮件),或签署您的mdb文件并在Outlook中信任它。后者相当复杂,但最安全。

希望这有帮助,

答案 1 :(得分:1)

您可以考虑Outlook Redemption