OUTLOOK /MSACCESS

di il
2 risposte

OUTLOOK /MSACCESS

Buona sera a tutti e davvero complimenti per il forum.
Ho un piccolo problema outlook/access.
Sto realizzando un'applicazione che ricava una lista di email ,fino a quà non c'è problema, il mio problema è dividire l'invio delle email.
Ad esempio ho 120(ma possono essere molte di piu') email (al fine di non farmi bloccare come spam) vorrei dividire l'invio ad esempio con piu' email contenenti 20 indirizzi.
Comunque è un'applicazione aziendale(ovviamente non è il mio lavoro creare applicazioni).
vi posto il codice (ovviamente recupera tutti gli indirizzi email).
Vi ringrazio anticipatamente per l'aiuto

Option Compare Database
Option Explicit
Private Sub Comando38_Click()
Dim db As DAO.Database
Dim rst As DAO.Recordset
Dim strsql As String
Dim outlo As Outlook.Application
Dim oemail As Outlook.MailItem
Dim vStringa As String
Dim emm As String
Dim i As Integer


Set outlo = CreateObject("Outlook.Application")
Set oemail = outlo.CreateItem(olMailItem)
Set db = CurrentDb

With oemail
strsql = "SELECT CLIENTI.[NOME CLIENTE], CLIENTI.LINEA, CLIENTI.LINEA1, CLIENTI.[LINEA2], CLIENTI.[LINEA3], EMAIL.[email] FROM CLIENTI LEFT JOIN EMAIL ON CLIENTI.[NOME CLIENTE] = EMAIL.[NOME CLIENTE] WHERE CLIENTI.[LINEA]='" & Me.LINEA & "' OR CLIENTI.[LINEA1] ='" & Me.LINEA & "' OR CLIENTI.[LINEA2] ='" & Me.LINEA & "' OR CLIENTI.LINEA3= '" & Me.LINEA & "' OR CLIENTI.[LINEA]='TUTTE LE LINEE'"
Set rst = db.OpenRecordset(strsql)


If rst.RecordCount > 0 Then
Do Until rst.EOF
vStringa = (vStringa & "; ") & rst.Fields("email")
If IsNull(rst.Fields("email")) Then
rst.MoveNext
Else
emm = emm & rst.Fields("email") & ";"
.BCC = emm
rst.MoveNext
End If

Loop
Else
MsgBox "nessuna email trovata"
End If

.To = ""
.BCC = vStringa
.Subject = Me.OGGETTO
.Body = Me.TESTO_EMAIL
.Display

End With
End Sub

2 Risposte

  • Re: OUTLOOK /MSACCESS

    Prima di tutt attenzione ad usare Recordcount per controllare il numero dopo l'apertura... perché quella proprietà non è aggiornata finché non si forza lo scorrimento... d solito si mette prima un movelast e movefirst ma solo dopo aver controllato EOF AND BOF che siano falsi...
    
    Set rs=.....
    If not (rs.eof and rs.bof) the
       Rs.movelast
       Rs.movefirst
       ' ora la proprietà Recordcount è aggiornata, ma se ci guardi
       ' non serve più...
       ....
    End if
    
    Ciò detto devi implementare un contatore che incrementi ad ogni ciclo, quando arrivi a 20 invii la mail resetti la stringa email ed il contatore e riparti...
    Metti un doevents nel ciclo.

    P.s.attenzione anche al controllo della presenza della mail... se il campo non è NULL ma NULLSTRING va in errore... e sono 2 condizioni possibili e diverse.
  • Re: OUTLOOK /MSACCESS

    Grazie mille
Devi accedere o registrarti per scrivere nel forum
2 risposte