OVH Cloud OVH Cloud

Mailing list >90

4 réponses
Avatar
Bauwens François
Bonjour,

J'ai un système d'envoie de mail via access. Pour info le code est
ci-dessous.
Mais si j'ai une liste d'adresse supérieure à 90, le système bloque.
je devrais donc lui dire :
si list>80 (par sécurité) then
ouvre un nouveau message et poursuit et si nécessaire un troisième et un
quatrième.

Je ne sais pas bien comment et où mettre ce texte.
Si vous avez une proposition elle est la bien venue.
Merci
FRans


Private Sub listmail()
Dim db As dao.Database, rs As dao.Recordset

Set db = CurrentDb
'entre guillement la table/requête d'origine
Set rs = db.OpenRecordset("adresses_mail")

Dim list As String

Do
list = list & rs![E-MAIL] & ";"
rs.MoveNext

Loop While Not rs.EOF

adre = list
End Sub


Private Sub Commande10_Click()

Call listmail

Dim Message As New CDO.Message
With Message
If adre <> "" Then
.To = adre
End If
If suje <> "" Then
.Subject = suje
End If
If corp <> "" Then
.TextBody = corp
End If
If attache <> "" Then
.AddAttachment Me![attache]
End If
End With
answer = MsgBox("Alors, on l'envoie ce mail ?", vbYesNo + vbQuestion,
"SERVICE B")
If answer = vbYes Then
Message.Send
Else
Exit Sub
End If
Set Message = Nothing
End Sub

4 réponses

Avatar
3stone
Salut,

"Bauwens François"
| J'ai un système d'envoie de mail via access. Pour info le code est
| ci-dessous.
| Mais si j'ai une liste d'adresse supérieure à 90, le système bloque.
| je devrais donc lui dire :
| si list>80 (par sécurité) then
| ouvre un nouveau message et poursuit et si nécessaire un troisième et un
| quatrième.
|
|
|
| Private Sub listmail()
| Dim db As dao.Database, rs As dao.Recordset
|
| Set db = CurrentDb
| 'entre guillement la table/requête d'origine
| Set rs = db.OpenRecordset("adresses_mail")
|
| Dim list As String
|
| Do
| list = list & rs![E-MAIL] & ";"
| rs.MoveNext
|
| Loop While Not rs.EOF



Le problème doit venir d'ici...
Tu place tous les mails dans un seul envoie.
Je pense qu'avec tes 90, tu passe la limite possible.
Pourquoi n'appelle tu pas le Send à chaque ligne ?




| adre = list
| End Sub
|
|
| Private Sub Commande10_Click()
|
| Call listmail
|
| Dim Message As New CDO.Message
| With Message
| If adre <> "" Then
| .To = adre
| End If
| If suje <> "" Then
| .Subject = suje
| End If
| If corp <> "" Then
| .TextBody = corp
| End If
| If attache <> "" Then
| .AddAttachment Me![attache]
| End If
| End With
| answer = MsgBox("Alors, on l'envoie ce mail ?", vbYesNo + vbQuestion,
| "SERVICE B")
| If answer = vbYes Then
| Message.Send
| Else
| Exit Sub
| End If
| Set Message = Nothing
| End Sub
|



--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/
Avatar
Bauwens François
Merci.
Je ne vois pas bien comment je vais écrire ça en code vba mais je vais
essayé !
Ceci dit, il doit bien y avoir de faire des blocs d'adresses différents, non
?
Frans

"3stone" a écrit dans le message de
news:
Salut,

"Bauwens François"
| J'ai un système d'envoie de mail via access. Pour info le code est
| ci-dessous.
| Mais si j'ai une liste d'adresse supérieure à 90, le système bloque.
| je devrais donc lui dire :
| si list>80 (par sécurité) then
| ouvre un nouveau message et poursuit et si nécessaire un troisième et un
| quatrième.
|
|
|
| Private Sub listmail()
| Dim db As dao.Database, rs As dao.Recordset
|
| Set db = CurrentDb
| 'entre guillement la table/requête d'origine
| Set rs = db.OpenRecordset("adresses_mail")
|
| Dim list As String
|
| Do
| list = list & rs![E-MAIL] & ";"
| rs.MoveNext
|
| Loop While Not rs.EOF



Le problème doit venir d'ici...
Tu place tous les mails dans un seul envoie.
Je pense qu'avec tes 90, tu passe la limite possible.
Pourquoi n'appelle tu pas le Send à chaque ligne ?




| adre = list
| End Sub
|
|
| Private Sub Commande10_Click()
|
| Call listmail
|
| Dim Message As New CDO.Message
| With Message
| If adre <> "" Then
| .To = adre
| End If
| If suje <> "" Then
| .Subject = suje
| End If
| If corp <> "" Then
| .TextBody = corp
| End If
| If attache <> "" Then
| .AddAttachment Me![attache]
| End If
| End With
| answer = MsgBox("Alors, on l'envoie ce mail ?", vbYesNo + vbQuestion,
| "SERVICE B")
| If answer = vbYes Then
| Message.Send
| Else
| Exit Sub
| End If
| Set Message = Nothing
| End Sub
|



--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/



Avatar
3stone
Salut,

"Bauwens François"
| Je ne vois pas bien comment je vais écrire ça en code vba mais je vais
| essayé !
| Ceci dit, il doit bien y avoir de faire des blocs d'adresses différents, non?


Si dans ta boucle "Do... Loop" tu incorpore un petit compteur
et que, disons arrivé à 50 tu envoie le mail en appelant ta sub
(que tu devrais transformer en Fonction et transmettre la liste des destinataires)
tu remets le compteur à zéro et tu continue dans ta boucle...



Dim list As String , compteur as integer


Do
list = list & rs![E-MAIL] & ";"
compteur = compteur + 1

rs.MoveNext

if compteur => 50 OR rs.EOF then
fnEnvoieMail(list)
list = ""
compteur = 0
end if

Loop While Not rs.EOF


et, ton "bouton de commande10" devient inutile


--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/
Avatar
Bauwens François
merci je tente...
"3stone" a écrit dans le message de
news:%
Salut,

"Bauwens François"
| Je ne vois pas bien comment je vais écrire ça en code vba mais je vais
| essayé !
| Ceci dit, il doit bien y avoir de faire des blocs d'adresses différents,
non?



Si dans ta boucle "Do... Loop" tu incorpore un petit compteur
et que, disons arrivé à 50 tu envoie le mail en appelant ta sub
(que tu devrais transformer en Fonction et transmettre la liste des
destinataires)

tu remets le compteur à zéro et tu continue dans ta boucle...



Dim list As String , compteur as integer


Do
list = list & rs![E-MAIL] & ";"
compteur = compteur + 1

rs.MoveNext

if compteur => 50 OR rs.EOF then
fnEnvoieMail(list)
list = ""
compteur = 0
end if

Loop While Not rs.EOF


et, ton "bouton de commande10" devient inutile


--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/