ошибка выполнения 287 при отправке почты с помощью vba в access 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

Кто-нибудь знает, как это исправить?

Заранее спасибо.


person Community    schedule 12.08.2009    source источник
comment
Как замечание: Outlook сильно ограничивает отправку сообщений через VBA (по очевидным соображениям безопасности). Я думаю, вам лучше использовать небольшой инструмент командной строки для отправки электронной почты.   -  person Dirk Vollmar    schedule 12.08.2009


Ответы (2)


В Access используйте DoCmd.SendObject, чтобы отправить электронное письмо. Пример:

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

Вместо отправки No Object вы также можете отправлять таблицы, запросы, формы, отчеты или формы. Таким образом невозможно прикрепить обычный файл.

Если вы автоматизируете Outlook и попытаетесь отправить сообщение, оно будет перехвачено Outlook. В зависимости от настроек безопасности Outlook, он полностью запрещает отправку почты с помощью автоматизации, спрашивает пользователя с помощью всплывающего окна, разрешена ли автоматизация, или просто отправляет почту (будьте осторожны с последним).

Если отправка почты прервана либо из-за того, что система безопасности полностью запрещает отправку почты с помощью автоматизации, либо из-за того, что пользователь нажал «нет» в диалоговом окне подтверждения, возникает ошибка 287.

Есть два способа решить эту проблему: отключить защиту (полностью или позволить пользователю подтвердить отправку почты) или подписать ваш mdb-файл и доверить его Outlook. Последний довольно сложный, но самый безопасный.

Надеюсь это поможет,

person Guillaume Hanique    schedule 12.08.2009

Вы можете рассмотреть возможность погашения Outlook.

person Fionnuala    schedule 12.08.2009