Invio email con Access senza uso di Outlook client

Anonimo
2020-10-24T04:10:36+00:00

Ciao a tutti,

grazie ai vostri suggerimenti in questi mesi sono diventato bravino con l'uso delle query. Sono riuscito a realizzare diversi programmini, ma ora per concluderne uno avrei bisogno di un supporto perchè non so se sto sbagliando o se mi manca qualche nozione.

Vi spiego il mio problema: ho realizzato una maschera in cui l'utente va ad aggiungere un record ad una tabella e stampa un pdf che verrà salvato costantemente nello stesso percorso di sistema.

Ora l'idea era quella di aggiungere un pulsante "Invia" con il qualche si potesse fare il collegamento ad Outlook e impostare una nuova email con l'allegato appena generato. L'Outlook del mio pc però non ha la versione client, quindi cercando un po' online mi sembra di aver capito che una soluzione è quella di usare il CDO. Ho trovato anche il codice che dovrebbe funzionare per attivarlo e ottenere il risultato desiderato. Il problema è che una volta cliccato sul tasto invio, mi compare un messaggio di errore "il trasporto non è riuscito a connettersi al server". Cosa sto sbagliando??

Vi posto il codice usato:

Private Sub Invia_Click()

Dim mail As New Message

Dim config As Configuration

Dim strMailTo As String, strSubject As String, strHtmlBody As String

Set config = mail.Configuration

config(cdoSendUsingMethod) = cdoSendUsingPort

config(cdoSMTPServer) = "smtp.office365.com"

config(cdoSMTPServerPort) = 587

config(cdoSMTPAuthenticate) = cdoBasic

config(cdoSMTPUseSSL) = True

config(cdoSendUserName) = "******@dominio.it"

config(cdoSendPassword) = "passAccessoMiaEmail"

config.Fields.Update

mail.To = "******@dominio.it" 'uso la mia email anche come ricevente per eseguire il test

mail.From = config(cdoSendUserName)

mail.Subject = "Subject from VBA"

mail.HTMLBody = "<b>Body from VBA<b/>"

'mail.AddAttachment = "scrivere link"

On Error Resume Next

mail.Send

If Err.Number <> 0 Then

MsgBox Err.Description, vbCritical, "C'è stato un errore"

End If

End Sub

Grazie anticipatamente

Stacla

Microsoft 365 e Office | Access | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

5 risposte

Ordina per: Più utili
  1. Anonimo
    2020-10-25T11:04:58+00:00

    Ciao Stacla,

    Se non hai un'esigenza specifica, usa la porta 25.

    Il codice che hai mostrato nel post iniziale, cambiando semplicemente la porta, funziona perfettamente.

    David

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2020-10-25T07:26:22+00:00

    Ciao David,

    ho riprovato variando il codice iniziale della forzatura TLS, con quanto sotto e ora dovrebbe funzionare:

        config.Fields(cdoSMTPServer).Value = "smtp.office365.com"

        config.Fields(cdoSMTPServerPort).Value = 587 'oppure porta 25

        config.Fields(cdoSMTPUseSSL).Value = True

        config.Fields(cdoSMTPAuthenticate).Value = cdoBasic

        config.Fields(cdoSendUsingMethod).Value = cdoSendUsingPort

        config.Fields(cdoSendUserName).Value = "miaEmail"

        config.Fields(cdoSendPassword).Value = "miaPass"

        config.Fields.Item(cdoSendTLS).Value = True

        config.Fields.Update

    Ma mi compare un nuovo messaggio di errore in prossimità del codice 

    config.Fields.Item(cdoSendTLS).Value = True

    errore 3265 "impossibile trovare l'oggetto nell'insieme corrispondente al nome o al numero richiesto"

    A questo punto però mi domando se questo messaggio è dovuto a impostazioni aziendali (lavorando con il computer aziendale)

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2020-10-24T17:32:19+00:00

    Ho letto un po' di articoli nel web e fatto qualche prova.

    Nonostante vari siti espongano degli script, a loro dire, funzionanti con l'autenticazione su porta 587, sembrerebbe esserci un problema specifico con il server smtp di office 365. Gli stessi script sembrano invece funzionare senza problemi usando la porta 25.

    Quitrovi uno script abbastanza completo.

    David

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2020-10-24T15:08:00+00:00

    Ciao David,

    ho letto l'articolo e la modifica a quanto creato in precedenza è l'aggiunta di questa linea di codice:

    config.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendtls").Value

    True

    ma anche con questa forzatura non riesco a risolvere il problema, il messaggio di errore persiste..

    Ho provato a cercare anche casi simili online, ma non riesco a trovare una soluzione..

    La risposta è stata utile?

    0 commenti Nessun commento
  5. Anonimo
    2020-10-24T09:19:07+00:00

    Ciao Stacla

    prova a seguire le indicazioni contenute in questo articolo (leggilo tutto, alla fine si parla di come abilitare il trasporto sulla porta 587 e ti fa scaricare un modulo con codice di esempio): Sending Emails from Access with VBA and CDO

    David

    La risposta è stata utile?

    0 commenti Nessun commento