Ciao,
perchè non consulti la documentazione del supporto Microsoft ?
Per esempio puoi iniziare da qui : https://learn.microsoft.com/en-us/office/vba/outlook/concepts/getting-started/automating-outlook-from-a-visual-basic-application
In generale, da qualche anno a questa parte, per inviare e-mail da VBA MsAccess nascono alcuni problemi e limitazioni legati alle protezioni dati di accesso peri i servizi email..
I codici che si usavano nel passato difficilmente riesci a farli funzionare.
Esistono servizi alternativi a pagamento oppure free, quest'ultimi hanno alcune limitazioni come per esempio il numero di email da poter spedire al mese etc... ,
Questi si occupano di gestire l'invio delle email in automatico, ma che utilizzerei solo se non avessi installato Office senza Outlook.
Per esempio se hai installato Office e hai Outlook, puoi continuare gratuitamente e in modo robusto e protetto, a inviare in automatico le email dal Vba.
Il servizio di Outlook che hai configurato si fa carico delle protezioni e quant'altro occorre a tal fine.
Come da documentazione che ti ho fornito, con il Vba è sufficiente fare riferimento alla libreria di Office atta per creare gli oggetti che occorro in ambito Outlook e utilizzare i suoi metodi e proprietà come da questo Esempio che ti ho preparato in questo momento:
' SEND EMAIL
Sub MySendEmail()
' Declare object
Dim OutlookApp As Object
Dim OutlookMail As Object
Dim EmailSubject As String
Dim EmailBody As String
Dim EmailTo As String
Dim EmailFrom As String
Dim EmailCC As String
Dim EmailBcc As String
Dim EmailPriority As Integer
Dim EmailRead As Boolean
' Create instance of Outlook
On Error Resume Next
Set OutlookApp = CreateObject("Outlook.Application")
On Error GoTo 0
' Check is running
If OutlookApp Is Nothing Then
MsgBox "Error outlook is not is running", vbCritical
Exit Sub
End If
' Create new email item
Set OutlookMail = OutlookApp.CreateItem(0)
' Set email From
EmailFrom = "xxxxxxxx"
' Set email To
EmailTo = "xxxxxxxxxx"
' Set email CC
EmailCC = ""
' Set email BCC
EmailBcc = ""
' Set priority (1 = normal, 2 = high, 0 = low)
EmailPriority = 1
' Set read receipt (True = request, False = don't request)
EmailRead = False
' Set email Subject
EmailSubject = "New Email Obj my Test"
' Set email Body
EmailBody = "New Message Body, my test Email"
' Set On error for the sending process
On Error Resume Next
' Set email and send
With OutlookMail
.To = EmailTo
If EmailCC <> "" Then .CC = EmailCC
If EmailBcc <> "" Then .BCC = EmailBcc
.Subject = EmailSubject
.Body = EmailBody
.Importance = EmailPriority
.ReadReceiptRequested = EmailRead
.Send
End With
' Check error sending email process
If Err.Number <> 0 Then
MsgBox "Error sending email... " & Err.Description, vbCritical
Else
MsgBox "Email successfully sent", vbInformation
End If
' Reset error
On Error GoTo 0
' Close
Set OutlookMail = Nothing
Set OutlookApp = Nothing
End Sub
.
Come vedrai ci sono quasi tutte le proprietà che puoi utilizzare e parametrizzare per il tuo uso specifico.
Quindi dovrai semplicemente:
- implementare i controlli e validazioni prima di eseguire l'invio dell'email
- implementare le liste dei Destinatari e/o dei CC e/o dei BCC
- parametrizzare il tipo di email da inviare :
- la priorità
- il ritorno del messaggio di avvenuta ricezione e lettura
- implementare l'invio email con allegato con il metodo .Attachments.Add
- etc..etc..
.
Ovviamente devi aver configurato in modo corretto il tuo Outlook con il suo/suoi User e Password di accesso.
A questo punto nella funzione che ti ho postato andrai a definire con quale User intendi inviare l'email.
Se funziona bene Outlook allora funzionerà anche l'invio tramite il Vba.
- Per quantoriguarda l'applicazione Outlook:
- non è necessario che sia aperto
- Outlook si apre solo se viene impostato la proprietà Visibile nell'oggetto OutlookApp.Visible = True
- puoi aprire Outlook per avere l'anteprima del messaggio prima di inviarlo:
- sostituire il metodo .Send con il metodo .Display. Di conseguenza si cliccherà su INVIA per spedire l'email
- etc... etc... etc...
.
Insomma gli argomenti sono tanti e non è possibile esporli tutti per spiegarti tutte le possibilità offerte dal sistema.
Se apri la documentazione che ti ho fornito all'inizio del post, troverai tutti gli argomenti utili da approfondire su questo tema.
Quindi il consiglio che posso darti, se con l'Office hai installato anche OutLook, è di utilizzarlo.
Risulta essere uno standard per l'applicazioni Office e mette a disposizione gli oggetti, metodi e proprietà sufficienti allo scopo.
Questo può garantire nel tempo efficienza e funzionalità. (fino a quando Microsoft lo vorrà) ;-)
Adesso tocca a te, approfondire e studiare la documentazione che ti ho fornito e personalizzare l'esempio, sopra riportato, secondo i tuoi scenari/esigenze.
Nota: ovviamente puoi inserire i parametri da passare a tale funzione in modo da poterla pilotare esternamente a proprio piacimento:
Per esempio tutti i valori del tipo:
Dim EmailSubject As String
Dim EmailBody As String
Dim EmailTo As String
Dim EmailFrom As String
Dim EmailCC As String
Dim EmailBcc As String
Dim EmailPriority As Integer
Dim EmailRead As Boolean
puoi impostarli e passarli come parametri ...per esempio:
Sub MySendEmail(EmailSubject As String, EmailTo As String, EmailFrom As String, EmailCC As String, EmailPriority As Integer, EmailRead As Boolean)
' Declare object
Dim OutlookApp As Object
Dim OutlookMail As Object
' Create instance of Outlook
On Error Resume Next
Set OutlookApp = CreateObject("Outlook.Application")
On Error GoTo 0
' Check is running
If OutlookApp Is Nothing Then
MsgBox "Error outlook is not is running", vbCritical
Exit Sub
End If
' Create new email item
Set OutlookMail = OutlookApp.CreateItem(0)
....
...
..
.
End Sub
Insomma, te devi da' da fa'... mo' te tocca. ;-)