Invio Email da Excel VBA



  • Invio Email da Excel - VBA
    di Raelear data: 26/03/2015 00:00:17

    Salve a tutti,
    spulciando il forum, ho trovato una vecchia discussione su come inviare email bypassando OutLook.

    ht tp://www.excelvba.it/Forum/story/Visual_Basic_for_Applications/invio_email_da_Excel_non_passando_da_Outlook.html

    questo il link alla discussione.

    Ho studiato un po' il codice ma manca la parte relativa all'inserimento della password a cui si fa riferimento nell'ultimo commento del thread..
    Qualcuno ha il codice completo o il file di esempio di cui si parla?
    marxitpa era l'autore della discussione.. forse lui ce l'ha? :)
    Saluti a tutti



  • di Raelear data: 26/03/2015 00:04:03

    scusate la svista..
    la variabile 'codice' é quella che gestiste l'inserimento della password..
    comunque vi sarei grato se poteste passarmi il file di esempio
    Grazie anticipatamente



  • di Raelear data: 26/03/2015 07:31:17

    Ho provato a fare un po' da solo.. ma ci sono cose che non capisco..
    Qualcuno puó aiutarmi?

    Il portatile che uso ha SO Win 8.1 (ed Excel 2010). E a parte tutto é in spagnolo perché sono in Argentina. Non so se sia caratteristica di Win 8, ma il Dispositivo di rete é legato alla email del proprietario della macchina [tranquilli, non l'ho rubato, é della mia compagna :) ]

    Ció premesso, ho provato a far girare il codice che ho trovato nel post a cui accennavo all'inizio della discussione ma non mi funziona.
    Vorrei innanzitutto capire se dove dice "in "A2" ' indirizzo accesso" devo inserire giusto la email che vedo legata al Dispositivo di Rete. E, di conseguenza, dove dice "in "Q2" 'password accesso ", devo inserire la password che usiamo per fare l'accesso al computer.
    Ho comunque provato a fare cosí, ma ricevo questo errore:
    "Si é prodotto l'errore '-2147220975(80040211)' durante l'esecuzione. Non si é potuto inviare il messaggio al server SMTP. Il codice di traferimento é 0x80040217. La risposta del server é stata non disponibile."
    Quando poi al messaggio di errore dó 'depurazione' mi evidenzia la riga ".send" in fondo al codice.

    Non esiste un modo per poter inviare una mail dal 'mio' indirizzo di posta tramite VBA?
    Voglio dire se uso gmail.. un modo per dirgli: dal mio indirizzo raelear@gmail.com manda questa email a pinko@hotmail.com, ad esempio..


     
    Sub InviaMail()
        Dim iMsg As Object
        Dim iConf As Object
        Dim strbody As String
        Dim Flds As Variant
        Dim MittenteMail, OggettoMail, DestinatarioMail As String
    Dim Da, Text, Ogg, achiTo, achiCC, achiBCC, Att1, Att2, Att3, codice, server, port As String
    Da = Range("A2")  ' indirizzo accesso
    codice = Range("Q2") 'password accesso
    Text = Range("I2") ' Testo - Ricorda che nella cella di inserimento (I2) per andare a capo basta premere Alt Invio
    Ogg = Range("H2") ' breve descrizione dell'oggetto del messaggio
    achiTo = Range("B2") ' indirizzi di posta elettronica dei destinatari principali.
    achiCC = Range("D2") ' indirizzi di posta elettronica dei destinatari in copia conoscenza
    achiBCC = Range("F2") ' indirizzi di posta elettronica dei destinatari in copia conoscenza nascosta, ovvero destinatari che riceveranno il messaggio ma il cui indirizzo non apparirà tra i destinatari.
    Att1 = Range("J2")      ' percorso primo file allegato
    Att2 = Range("K2")     ' percorso secondo file allegato
    Att3 = Range("L2")     ' percorso terzo file allegato
    server = Range("R2")   ' server
    port = Range("S2")       ' porta
        Set iMsg = CreateObject("CDO.Message")
        Set iConf = CreateObject("CDO.Configuration")
        iConf.Load -1    ' CDO Source Defaults
        Set Flds = iConf.Fields
        With Flds
    ' TOGLIERE LO SPAZIO in "ht tp://
            .Item("ht tp://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
            .Item("ht tp://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
            .Item("ht tp://schemas.microsoft.com/cdo/configuration/sendusername") = Da        ' indirizzo accesso
            .Item("ht tp://schemas.microsoft.com/cdo/configuration/sendpassword") = codice   'password accesso
            .Item("ht tp://schemas.microsoft.com/cdo/configuration/smtpserver") = server
            .Item("ht tp://schemas.microsoft.com/cdo/configuration/sendusing") = 2
            .Item("ht tp://schemas.microsoft.com/cdo/configuration/smtpserverport") = port
            .Update
        End With
       
        strbody = Ogg
    DestinatarioMail = achiTo
        With iMsg
            Set .Configuration = iConf
            .To = achiTo
            .CC = achiCC
            .BCC = achiBCC
            MittenteMail = Da
            OggettoMail = Ogg
            .From = Da
            .Subject = Ogg
            .TextBody = Text
            If Att1 <> "" Then
            .AddAttachment Att1 ' <<<<<<<<< primo file
            End If
            If Att2 <> "" Then
            .AddAttachment Att2 ' <<<<<<<<< secondo file
            End If
            If Att3 <> "" Then
            .AddAttachment Att3 ' <<<<<<<<< terzo file
            End If
            .Send    <<<<<------------ERRORE segnalato dal debug
        End With
    End Sub



  • di lepat (utente non iscritto) data: 26/03/2015 09:47:51

    prova a cambiare solo questa riga
    .Item("ht tp://schemas.microsoft.com/cdo/configuration/smtpserverport") = port
    con
    .Item("ht tp://schemas.microsoft.com/cdo/configuration/smptserverport") = port

    credo che sia un bug perché non ha senso



  • di Raelear data: 26/03/2015 17:13:58

    ciao lepat,
    ho provato ma mi da comunque errore. Devo essere sincero, non ho capito il senso della modifica che mi hai proposto, ma ho fatto come mi hai detto.
    Ho trovato in rete una discussione analoga, ma il problema avveniva su un Office 2007, e comunque non sembra ne siano venuti a capo. Questo il link:
    ht tp://answers.microsoft.com/it-it/office/forum/office_2007-excel/macro-su-excel-2003-2007-e-2010-si-comporta/77ea7ca8-5136-463f-b85d-6773c98067c0
    Altre idee o suggerimenti?



  • di lepat (utente non iscritto) data: 26/03/2015 18:45:11

    non l'hai capito perché ho sbagliato ad incollare
    devi scrivere
    smptserverport
    invece di
    smtpserverport



  • di lepat (utente non iscritto) data: 26/03/2015 18:46:41

    con questa modifica il tuo codice mi funziona



  • di Raelear data: 26/03/2015 20:40:57

    ..avevo risposto ma quando, dopo un po' ho aggiornato non trovo la mia risposta.. vabbé riscrivo, sperando non sia un doppione..

    si, lepat, avevo visto lo scambio che facevi tra "p" e "t" giá nel tuo post precedente, non avevi sbagliato a scrivere..
    quello che non capivo era il perché di questa inversione, apparentemente strana, visto che la parola chiave smtp ha un senso, mentre smpt sembrerebbe non averne.. almeno per me.
    In tutti i modi, come ti scrivevo, ho fatto quanto mi hai detto, ma il risultato é lo stesso..
    Mi confermi comunque che lí dove del codice dice: " ' indirizzo accesso" e " 'password accesso", devo metterci ció con cui mi loggo al pc?
    Ultima domanda, forse sciocca: ma non esiste un modo, via codice, per dirgli.. entra nella mia email (mio caso gmail) con le mie credenziali (password) e invia una email al tal indirizzo?
    Grazie per la pazienza



  • di lepat (utente non iscritto) data: 29/03/2015 17:05:26

    io conosco solo il modo che hai allegato tu nel primo post, quel codice lo avevo anche io e funziona.
    Ti avevo detto subito "credo che sia un bug perché non ha senso"

    In rete trovi anche altri metodi che però utilizzano outlook (che io non ho)



  • di lepat (utente non iscritto) data: 29/03/2015 17:10:20

    non avevo notato la domanda
    Mi confermi comunque che lí dove del codice dice: " ' indirizzo accesso" e " 'password accesso", devo metterci ció con cui mi loggo al pc?

    indirizzo accesso = tua e-mail
    password accesso = tua password dell account di e-mail



  • di Raelear (utente non iscritto) data: 31/03/2015 00:27:05

    Grazie lepat,
    purtroppo non va.. anche se ho provato in tutti i modi.. non importa, troveró un altro sistema
    Saluti