Inviare email da email -- erorre su "SendUsing"

di il
6 risposte

Inviare email da email -- erorre su "SendUsing"

Sto procedendo nello sviluppo di una soluzione personalizzata in VBA.
Sono nella condizione di dover inviare uan email alla fine della fase di registrazione utente.
Ho pertanto proceduto in questi termini.

1)Inserimento nei riferimenti di "Microsoft CDO for Windows 2000 library"


2) creato una sub in cui ho personalizzato il CDO

Option Explicit

Private Const GMAIL_EMAIL As String = "Indirizzoemail1"
Private Const GMAIL_APP_PASSWORD As String = "password1"

Private Const SMTP_SERVERADDRESS As String = "smtp.gmail.com"
Private Const SMTP_PORT As Integer = 465
Private Const SMTP_USESSL  As Boolean = True
Private Const SMTP_SENDUSING  As Integer = 2
Private Const SMTP_AUTHTYPE As Integer = 1
Sub testsmtp()
    Sendmail_SMTP "New Email via SMTP", "hello Via VBA", "indirizzoemail2"
End Sub
Public Sub Sendmail_SMTP( _
                        ByVal subject As String, _
                        ByVal emailBody As String, _
                        ByVal recipient As String, _
                        Optional ByVal cc As String, _
                        Optional ByVal vAttachments As Variant _
                        )

Dim cdoConfig As Object
Dim cdoMessage As Object
Dim Schema As String

    Set cdoConfig = CreateObject("CDO.Configuration")
    On Error GoTo Error_Handling
    Set cdoMessage = CreateObject("CDO.Message")
    
    Schema = "http://schema.microsoft.com/cdo/configuration/"

    With cdoConfig.Fields
        .Item(Schema & "smtpusessl") = SMTP_USESSL
        .Item(Schema & "smtpauthenticate") = SMTP_USESSL
        .Item(Schema & "smtpserver") = SMTP_SERVERADDRESS
        .Item(Schema & "smtpserverport") = SMTP_PORT
        .Item(Schema & "sendusing") = SMTP_SENDUSING
        .Item(Schema & "sendusername") = GMAIL_EMAIL
        .Item(Schema & "sendpassword") = GMAIL_APP_PASSWORD
        .Update
     End With

    With cdoMessage
         .Configuration = cdoConfig
         .To = recipient
         If Not IsMissing(cc) Then .cc = cc
         .Sender = GMAIL_EMAIL
         .subject = subject
         .TextBody = emailBody
         If Not IsMissing(vAttachments) Then
            If IsObject(vAttachments) Then
                Dim att As Variant
                For Each att In vAttachments
                    If Dir(att) <> "" Then .AddAttachment CStr(att)
                Next att
            Else
                If Dir(vAttachments) <> "" Then
                End If
            End If
         End If
         .Send
         
      End With
    MsgBox "Inviata email di comunicazione"
    Set cdoConfig = Nothing
    Set cdoMessage = Nothing

Error_Handling:
If Err.Description <> "" Then MsgBox Err.Description

End Sub

Il codic emi sembra corretto, mentre va in errore 

Non riesco a capire dove stia l'errore.
Nessuno si è mai imbattuto in questo problema ?
Grazie

Moreno

6 Risposte

  • Re: Inviare email da email -- erorre su "SendUsing"

    Ho provato a fare debug sul codice utilizzato per eseguire la connessione al smtp.gmail.com
    Mi sembra che Il codice sia impostato correttamente, e ritengo che il problema sia legato al smtpserver di google.
    Occorrerebbe qualcuno esperto di reti per capire come posso superare il problema.
    ho riscritto il codice , che riporto per chiarezza

    Private Sub SendEmailUsingGmail(username As String, password As String, from As String, Rcpt As String, textBody As String, Optional subject As String, Optional Attachment As String, Optional cc As String, Optional bcc As String)
    
    Dim NewMail As CDO.message
    Set NewMail = New CDO.message
    
    NewMail.Configuration.Fields.Item _
    ("http://schemas.microsoft.com/cdo/configuration/smtpusesel") = True
    
    NewMail.Configuration.Fields.Item _
    ("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
    
    NewMail.Configuration.Fields.Item _
    ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.gmail.com"   
    
    NewMail.Configuration.Fields.Item _
    ("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
    
    NewMail.Configuration.Fields.Item _
    ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 465  
    
    NewMail.Configuration.Fields.Item _
    ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
    
    NewMail.Configuration.Fields.Item _
    ("http://schemas.microsoft.com/cdo/configuration/sendusername") = username
    
    NewMail.Configuration.Fields.Item _
    ("http://schemas.microsoft.com/cdo/configuration/sendpassword") = password
    
    NewMail.Configuration.Fields.Update
    
    With NewMail
        .subject = subject
        .from = from
        .To = Rcpt
        .cc = cc
        .bcc = bcc
        .textBody = textBody
         If Attachment <> "" Then
            .AddAttachment (Attachment)
         End If
    NewMail.Send
    MsgBox "Inviata email da CDO - Soluzione 2", vbInformation
    
    Set NewMail = Nothing
    
    End With
    
    End Sub

    ottengo il seguente errore

    Ho provato anche a disabilitare il firewall e l'antivirus, ma il problema si manifesta sempre con lo stesso codice d'errore.
    Nessuno ha qualche idea ?

    Grazie

    Moreno

  • Re: Inviare email da email -- erorre su "SendUsing"

    ("http://schemas.microsoft.com/cdo/configuration/smtpusesel") = True

    Questo non lo conosco ... cosa è "smtpusesel" ?

    Dove è che definisci quale tipologia di autenticazione deve essere usata ?

    Google usa "OAuth2" per le e-mail ...

  • Re: Inviare email da email -- erorre su "SendUsing"

    06/01/2026 - morenog ha scritto:

    1)Inserimento nei riferimenti di "Microsoft CDO for Windows 2000 library"

    Leggendo qua e la mia sembra di capire che il problema è gmail

    Deve essere autorizzato l'accesso dal nuovo dispositivo. È gmail che è cambiato come politica di sicurezza.

    Cerca nelle FAQ di gmail

  • Re: Inviare email da email -- erorre su "SendUsing"

    Ciao Sihsandrea

    So che sono cambiate le politiche di sicurezza di Gmaail.
    Ho provato a cercare sul profilo di google e su quello di Gmail, ma non trovo dove intervbenire per impostare su ON il flag "Consenti app meno sicure" .
    Ma dal punto di vista sicurezza non mi sembra corretto poter abilitare questo oparametro, che però dovrebbe essere l'unica maniera per abilitare l'invio delle emal da excel con CDO.

    Ti sei mai trovato in questa condizione ?
    grazie

    Moreno

  • Re: Inviare email da email -- erorre su "SendUsing"

    07/01/2026 - Delphinium ha scritto:

    Questo non lo conosco ... cosa è "smtpusesel" ?

    Più probabile che sia useSsl (SSL).

    07/01/2026 - morenog ha scritto:

    Ho provato a cercare sul profilo di google e su quello di Gmail, ma non trovo dove intervbenire per impostare su ON il flag "Consenti app meno sicure" .

    Fai una ricerca su Google, il motore di ricerca.

    Ma dal punto di vista sicurezza non mi sembra corretto poter abilitare questo oparametro

    Perché non dovrebbe sembrarti corretto?

  • Re: Inviare email da email -- erorre su "SendUsing"

    07/01/2026 - morenog ha scritto:

    Ti sei mai trovato in questa condizione ?
    grazie

    No, tra le varie ricerche era citata la libreria che stai usando... Non mi sono incentrato nell'argomento ma credo che non sei il primo con questa problematica.

    Segui il consiglio di alla, fai la tua ricerca e se hai qualche dubbio possiamo aiutarti. La ricerca la devi fare tu.

Devi accedere o registrarti per scrivere nel forum
6 risposte