Errore su invio mail in VBA

di Anonimizzato19521 il
18 risposte
Ciao a tutti,
ho in VBA (Access 2003 SP2) uno script che invia una mail ad un certo numero di destinatari (tutti in BCC).
Gli indirizzi dei destinatari vengono presi da una tabella CLIENTI.
Lo script funziona benissimo, se non per il fatto che se i destinatari sono piu di 90, ricevo un "Errore di runtime 87. Errore imprevisto".
Lo script è il seguente:
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim strMail As String
Dim Subjectline As String
Dim BodyFile As String
Dim MyBodyText As String
Dim strBCC As String
Subjectline = Me.Testo1.Value
BodyFile = Me.Testo2.Value


Set db = CurrentDb()
Set rs = db.OpenRecordset("SELECT Email FROM clienti WHERE (EMail <> ' ')")
If rs.RecordCount = 0 Then
MsgBox "Nessun indirizzo email trovato!", vbCritical, "ERROR"
Exit Sub
End If
While Not rs.EOF
strMail = strMail & rs("Email") & ";"
rs.MoveNext
Wend

Set rs = Nothing
FollowHyperlink "mailto:?bcc=" + strMail + "&subject=" + Subjectline + "&body=" + BodyFile
Exit Sub
IL codice funziona perfettamente. Lo script cicla i destinatari e li mette tutti in BCC aprendo una nuova finestra del mio programma di posta predefinito (in questo caso Outlook 2013), ma solo se nella mia tabella CLIENTI ho meno di 90 indirizzi email. Sopra i 90 mi da l'errore sopra citato senza nemmeno arrivare ad aprire la finestra del programma di posta.
Quando ricevo l'errore, se apro il debug, mi rimanda a questa riga:
FollowHyperlink "mailto:?bcc=" + strMail + "&subject=" + Subjectline + "&body=" + BodyFile
Quindi sembrerebbe che fa tutto ma si inchioda quando deve lanciare Outlook.
Qualche idea?
Grazie

18 Risposte

  • Prova a leggere questo:
    **
  • Grazie della risposta.
    Quindi consigli di usare MAPI per saltare l'utilizzo del client di posta e fare un invio SMTP direttamente da Access?
    Non c'è verso di risolvere la cosa sul mio codice?
  • Di sicuro non si usa FollowHyperlink... eventualmente puoi provare con SendObject...
  • Ero partito con SendObject, ma in quel caso mi si apriva un messaggio di Outlook che diceva che un'applicazione esterna stava tentando di utilizzare Outlook, e non sono riuscito in nessun modo a togliermi quel messaggio dalle impostazioni di Outlook...
    Specifico: non era il popup con i pulsanti ALLOW e DENY, era un messaggio che mi compariva come "fumetto" sull'icona nella barra delle applicazioni di Windows, che non consentiva di fare nulla.
    Sono passato a FollowHyperlink per quello.
  • È una coincidenza allora la problematica dell'altro forum oppure sei sempre tu l'autore...?
  • Quale altro forum? Io ho postato solo qui... Non faccio crossposting.
    Ho letto su diversi forum di problemi simili, ma credo il mio sia diverso... Il mio è un errore di Runtime che non credo dipenda da Outlook
  • A proposito, in quell'altro forum hanno per caso trovato una soluzione?
  • Volevo chiedere se possibile un chiarimento rispetto a MAPI, che non ho mai utilizzato e che non conosco bene.
    Tramite MAPI faccio un invio SMTP direttamente da Access senza usare il mio client di posta?
  • alexxx71 ha scritto:


    Volevo chiedere se possibile un chiarimento rispetto a MAPI, che non ho mai utilizzato e che non conosco bene.
    Tramite MAPI faccio un invio SMTP direttamente da Access senza usare il mio client di posta?
    Il protocollo è sempre quello, MAPI è la libreria su cui si appoggia MsOutlook...!
  • Quindi sopra i 100 destinatari mi ritroverei sempre con lo stesso problema (limite di Outlook).
    Si potrebbe magari "spezzettare" l'invio su diverse email, con un limite di 90 destinatari per ogni mail?
  • alexxx71 ha scritto:


    Quindi sopra i 100 destinatari mi ritroverei sempre con lo stesso problema (limite di Outlook).
    Hai provato...?

    alexxx71 ha scritto:


    Si potrebbe magari "spezzettare" l'invio su diverse email, con un limite di 90 destinatari per ogni mail?
    Fossi in te proverei...
  • Si, come ho detto in precedenza sopra i 90 destinatari ho quell'errore di Runtime.
    Utilizzando il metodo SendObject invece, mi da il problema sopra citato di programma esterno che cerca di accedere ad outlook...
    Naturalmente la cosa migliore sarebbe risolvere il problema che ho su Outlook, ma proprio non riesco ad uscirne.
    Avresti qualche suggerimento su come spezzettare in diverse email? O su come risolvere il problema di Outlook?
  • alexxx71 ha scritto:


    Si, come ho detto in precedenza sopra i 90 destinatari ho quell'errore di Runtime.
    Soluzione semplice:
    puoi eseguire un ciclo 'a step' di 90 record alla volta.
  • Grazie gibra, sapresti indicarmi come farlo? Non l'ho mai fatto e non so come muovermi...
Devi accedere o registrarti per scrivere nel forum
18 risposte