2016-05-31 4 views
0

Мне нужно отправить электронное письмо из базы данных MS Access с помощью вложения (не объекта Access, а отдельный файл), но не привязаны ни к одному программному обеспечению электронной почты (Groupwise, Outlook и т. Д.). Я нашел код для отправки электронной почты с вложением с помощью Groupwise и Outlook, и есть общий DoCmd.SendObject, который только поддерживает поддержку объектов Access. Есть ли способ отправить электронное письмо из Access с вложением, независимо от клиента электронной почты, настроенного на ПК пользователя?Отправить электронное письмо с приложением из любой почтовой программы

Обоснование: Здесь есть осложнения с развертыванием программного обеспечения. На машине, на которой я работаю, установлены Access 2013 и Outlook 2013. Пользователи базы данных работают с Access 2010, но когда я собираю базу данных в .accde в 2013 году, она не работает в 2010 году. Единственный способ заставить ее работать - это скомпилировать ее на гораздо более старом ПК, который также работает Access 2010. Однако на этом старом ПК нет Outlook, и IT не сможет/не сможет установить Outlook на него. Это означает, что я не могу скомпилировать базу данных с помощью библиотеки Outlook, так как на компьютере нет библиотеки Outlook.

ответ

2

Вот код я использую для отправки электронной почты с помощью Gmail:

Public Function SendEmailViaGmail(SendTo As String, Optional Subject As String = "", Optional TextBody As String = "", Optional ReplyTo As String = "", Optional AttachedFiles As Variant = "") As String 
On Error GoTo send_emailErr 
    Dim ErrNum As Long 
    Dim ErrDes As String 
    SendEmailViaGmail = "" 
    ErrNum = 0 
    Set cdomsg = CreateObject("CDO.message") 
    With cdomsg.Configuration.Fields 
     .Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 'NTLM method 
     .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.gmail.com" 
     .Item("http://schemas.microsoft.com/cdo/configuration/smptserverport") = 587 
     .Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1 
     .Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True 
     .Item("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 60 
     .Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = sendusername ' 
     .Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = sendpassword 
     .Update 
    End With 
    ' build email parts 
    With cdomsg 
     .To = SendTo 
     .FROM = sendusername 
     .Subject = Subject 
     .TextBody = TextBody & vbCrLf & vbCrLf & vbCrLf & "--" & vbCrLf & "Sent using Marlan Data-Systems" 
     If IsArray(AttachedFiles) Then 
      For Each AttachedFile In AttachedFiles 
       If Len(AttachedFile) > 3 Then .AddAttachment AttachedFile 
      Next 
     Else 
      If Len(AttachedFiles) > 3 Then .AddAttachment AttachedFiles 
     End If 
     .send 
    End With 
    SendEmailViaGmail = "Done!" 
send_emailExit: 
    Set cdomsg = Nothing 
    Exit Function 

send_emailErr: 
    ErrNum = Err.Number 
    ErrDes = Err.Description 
    Select Case Err.Number 

    Case -2147220977 'Likely cause, Incorrectly Formatted Email Address, server rejected the Email Format 
     SendEmailViaGmail = "Please Format the Email Address Correctly." 

    Case -2147220980 'Likely cause, No Recipient Provided (No Email Address) 
     SendEmailViaGmail = "Please Provide an Email Address" 

    Case -2147220960 'Likely cause, SendUsing Configuration Error 
    SendEmailViaGmail = "SendUsing Configuration Error" 

    Case -2147220973 'Likely cause, No Internet Connection 
     SendEmailViaGmail = "Please Check Internet Connection" 

    Case -2147220975 'Likely cause, Incorrect Password 
     SendEmailViaGmail = "Please Check Password" 

    Case Else 'Report Other Errors 
     SendEmailViaGmail = "" 
    End Select 
    SendEmailViaGmail = SendEmailViaGmail & " Error number: " & Err.Number & " Description: " & Err.Description 
    'If ErrNum = -2147220975 Then 
    ' cdomsg.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smptserverport") = 465 
    ' Resume 
    'End If 
    Resume send_emailExit 
End Function 

AttachedFiles является String, или массив строк, представляющих полный путь к файлу или файлам, которые должны быть присоединены к электронной почте ,
CDO.message - это объект Microsoft Windows.
Вы можете заменить значение smtpserver на другую службу рассылки. Если вы это сделаете, обязательно измените и другие параметры. Код основан на коде, который я нашел в Интернете.

Смежные вопросы