Отправка электронной почты из MS Access. Сторонние dll не допускаются. - PullRequest
3 голосов
/ 16 июля 2009

Мне нужно отправить серию уведомлений по электронной почте из базы данных MS Access.

  • Никакие сторонние dll не похожи на Redemption
  • Не удается отключить предупреждения безопасности Outlook
  • К электронному письму будет прикреплено PDF

Я знаю, что для этого мне нужно использовать MAPI, но я не могу найти способ сделать это с VBA.

Любая помощь будет оценена

Спасибо

Scott

Ответы [ 3 ]

2 голосов
/ 16 июля 2009

Если вы можете смириться с необходимостью наличия CDO на машине, и вы не возражаете против предоставленного пользователем SMTP-сервера, вы можете использовать это. Просто Google для примера кода, но для вашего удобства я вставлю ниже из www.rondebruin.nl :

Sub CDO_Mail_Small_Text()
Dim iMsg As Object
Dim iConf As Object
Dim strbody As String
'    Dim Flds As Variant

Set iMsg = CreateObject("CDO.Message")
Set iConf = CreateObject("CDO.Configuration")

'    iConf.Load -1    ' CDO Source Defaults
'    Set Flds = iConf.Fields
'    With Flds
'        .Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
'        .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") _
'                       = "Fill in your SMTP server here"
'        .Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
'        .Update
'    End With

strbody = "Hi there" & vbNewLine & vbNewLine & _
          "This is line 1" & vbNewLine & _
          "This is line 2" & vbNewLine & _
          "This is line 3" & vbNewLine & _
          "This is line 4"

With iMsg
    Set .Configuration = iConf
    .To = "ron@debruin.nl"
    .CC = ""
    .BCC = ""
    .From = """Ron"" <ron@something.nl>"
    .Subject = "Important message"
    .TextBody = strbody
    .Send
End With

End Sub

Добавление вложения будет сделано с помощью .AddAttachment «C: \ files \ filename.pdf» на iMsg.

0 голосов
/ 18 июля 2009

См. Страницу Часто задаваемые вопросы по электронной почте Microsoft Access - напрямую через Winsock Я сам не пробовал, но вы сможете адаптировать код VB6 для прямой отправки электронных писем.

0 голосов
/ 16 июля 2009

Если у пользователя установлен outlook:

Dim strErrMsg As String 'For Error Handling
Dim olApp As New Outlook.Application
Dim olNameSpace As Outlook.NameSpace
Dim olMail As Outlook.MailItem
Dim oleGrf As Object
Dim strFileName As String

Set olNameSpace = olApp.GetNamespace("MAPI")
Set olMail = olApp.CreateItem(olMailItem)
Set oleGrf = Me.OLEchart.Object
strFileName = "c:\temp\Graph.jpg"
oleGrf.Export FileName:=strFileName

With olMail
    .To = "someone@somewhere.com"
    .Subject = "Graph Info " & Format(Now(), "dd mmm yyyy  hh:mm")
    .Attachments.Add strFileName
    .ReadReceiptRequested = False
    .Send
End With
Kill strFileName

Также ознакомьтесь с электронной почтой Microsoft Access:

.
...