Invio email da excel vba tramite Outlook -- non viene consegnata

di il
5 risposte

Invio email da excel vba tramite Outlook -- non viene consegnata

Ho personalizzat in vba un file excel creando una piccola applicazione.
L'applicazione prevede in alcune fasi l'invio di email.
Sul mio portatile che uso per la fase di sviluppo, l'invio avviene in maniera regolare.
In Associazione di volontariato che deve utilizzare l'applicazione, invece vedo che la posta arriva in outlook, ma poi non esce da outlook per l'inoltro al provider dell'utente finale. Utilizzo outlook in versiione Classic.
Ho forzato la funzionalità Invia/ricevi su outlook, ma non si verifica l'uscita da outlook verso il provider dell'utente finale.
Sicuramente è un problema di parametri non correttamente configurati, ma, dopo aver cercato e verificato i paramentrri esistenti, non so che altro tipo di verifica fare.

Come posso risolvere il problema ?
Resto a disposizione per ogni altro choarimento.
Grazie

Moreno 

5 Risposte

  • Re: Invio email da excel vba tramite Outlook -- non viene consegnata

    Che vuoi dire con:

    04/03/2026 - morenog ha scritto:

    Utilizzo outlook in versiione Classic.

    Utilizzi la versione Office Desktop oppure quella preinstallata da Windows? Se utilizzi quella del secondo caso, allora la versione New non espone più l'autorizzazione COM usata da VBA.

    Ti conviene utilizzare la versione Office Desktop (installata e configurata per l'invio e ricezione della posta). 

    Quale codice VBA utilizzi per l'inoltro delle email?

  • Re: Invio email da excel vba tramite Outlook -- non viene consegnata

    Grazie Alexps81

    sei sempre di grande aiuto.
    Utilizzo la versione Office Desktop.
    Ho controllato ed è configurato IMAP per Server posta in arrivo    porta 993 con ssl
    Su posta Gmail ho impostato IMAP

    Mi sembrerebbe che andasse, ma forse scordo qiualcosa.
    Riesci a vedere se è tutto corretto ?
    Grazie

    Moreno

  • Re: Invio email da excel vba tramite Outlook -- non viene consegnata

    Ma quindi stai provando a spedire posta con account Gmail tramite Outlook Desktop di Office?

  • Re: Invio email da excel vba tramite Outlook -- non viene consegnata

    Si sto utilizzando outlook desktop di Office.

    Non ricordo la versione, ma vado a memoria.
    Mi sembra 2021

    Grazie

    Moreno

  • Re: Invio email da excel vba tramite Outlook -- non viene consegnata

    Dunque, ho fatto un po' di prove e sembra funzionare bene:

    1. ho avviato Outlook Desktop di Office
    2. poi sono andato su FILE e AGGIUNGI NUOVO ACCOUNT
    3. ho indicato il mio indirizzo di Gmail
    4. a questo punto ho predisposto Outlook a ricevere e inviare posta con account Gmail
    5. infine ho utilizzato questo codice per la spedizione:
    Option Explicit
    Sub inviaMail()
       Dim outApp As Object
       Dim outMail As Object
       Dim account As Object
       
       On Error GoTo ErrHandler
       
       If Trim(Range("B1").Value) = "" Then
           MsgBox "Inserire destinatario in B1.", vbExclamation
           Exit Sub
       End If
      
       On Error Resume Next
       Set outApp = GetObject(, "Outlook.Application")
       On Error GoTo ErrHandler
       
       If outApp Is Nothing Then
           Set outApp = CreateObject("Outlook.Application")
       End If
       
       Set outMail = outApp.CreateItem(0)
       
       For Each account In outApp.Session.Accounts
           If LCase(account.SmtpAddress) = LCase("Tuo_IndirizzoGmail") Then
               Set outMail.SendUsingAccount = account
               Exit For
           End If
       Next account
       
       With outMail
           .To = Range("B1").Value
           .Subject = Range("B2").Value
           .Body = Range("B3").Value
           .Send
       End With
       
       MsgBox "Mail spedita.", vbInformation
    Cleanup:
       Set outMail = Nothing
       Set account = Nothing
       Set outApp = Nothing
       Exit Sub
    ErrHandler:
       MsgBox "Errore: " & Err.Description, vbCritical
       Resume Cleanup
    End Sub

    Il codice prevede che l'indirizzo a cui spedire sia scritto in "B1", l'oggetto della mail in "B2" e il corpo della mail in "B3". 

    Poi devi indicare qui il tuo indirizzo Gmail da cui partono le mail:

    If LCase(account.SmtpAddress) = LCase("Tuo_IndirizzoGmail") Then

    Quindi il codice fa una scansione per verificare se l'oggetto Outlook è già istanziato. Qualora non lo fosse lo crea. Poi scansiona tra gli account registrati in Outlook quello indicato per la spedizione. A questo punto predispone la mail e la spedisce. Mancherebbe la parte per gli allegati...ma quella è una cosa a parte.

    A me funziona senza problemi. Ho fatto vari test e le mail mi sono tutte arrivate.

Devi accedere o registrarti per scrivere nel forum
5 risposte