Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Email Liste des destinataires

18 réponses
Avatar
Xavier
Bonjour,

J'essaye d'envoyer un message depuis Access vers plusieurs destinataires
recensés dans une table.

Mon problème est que je n'arrive pas a dire a access d'envoyer ce message en
se basant sur cette table.

J'ai bien essayé ça :

Dim Destinataire as String

Destinataire = Matable!destmail

mais je me perd complètement (débutant oblige).

Merci d'avance pour votre aide

Xavier

8 réponses

1 2
Avatar
Xavier
Merci 1000 fois Raymond & Eric ca marche a merveille

Raymond j'ai testé ta commande en brut au début je me suis envoyé 3091 mails
en 2 minutes :O)

voici donc le code qui va bien

Function SendEmailCDO()
' Envoi EMAIL CDO avec Serveur virtuel SMTP installé
' Envoi automatique d'un message avec deux fichiers joints.
' Nécessite Windows 2000/XP ou une installation Microsoft Office (Outlook).
'
' Dans From Adresse de l'expéditeur
' Dans To cherche dans une table nommé "Table1" le champ "destmail"
contenant
' une liste d'adresse E-Mail
' Dans Subject spécifie le sujet du mail
' Dans TextBody ou HTMLBody Inscris le corps du mail
' Dans AddAttachment Inscris l'adresse de la PJ à envoyer
'
'
Dim Db As DAO.Database
Dim Rs As DAO.Recordset
Dim Destinataire As String
Set Db = CurrentDb
Set Rs = Db.OpenRecordset("table1")
If Rs.BOF Then GoTo Exit_Function
Do Until Rs.EOF

While Not Rs.EOF
Destinataire = Destinataire & Rs!destmail & ";"
Rs.MoveNext
Wend


With CreateObject("CDO.Message")
.From = ""
.To = Destinataire
.Subject = "Sujet"
.TextBody = "corp du message" _
& vbNewLine & vbNewLine _
& "Signature" & vbNewLine _
& "société" & vbNewLine _
& "Adresse société" & vbNewLine _
& "CP + VILLE"
'.AddAttachment ("C:Mes FichiersMon Fichier_1.ext")
'.AddAttachment ("C:Mes FichiersMon Fichier_2.ext")
On Error Resume Next
.Send
If Err Then MsgBox "Le message n'a pas pu être expédié."
On Error GoTo 0
End With
Loop

Exit_Function:
Rs.Close
Set Rs = Nothing
Set Db = Nothing

End Function

'------

Merci encore @ vous !!!!
Avatar
Eric
re Xavier,

Juste 2 petites remarques.

1- dans la boucle Do Until Rs.EOF ... Loop, tu n'as pas mis de
Rs.MoveNext donc elle ne tourne pas et tu sors quand même car à
l'intérieur tu as mis :

While Not Rs.EOF
destinataireÞstinataire & RS!destmail & ";"
Rs.MoveNext
Wend

si bien qu'en sortie du Wend tu as atteint la fin de Rs et donc ca
vérifie ton Do Until Rs.EOF.

2 - Puisqu'apparemment tu peux envoyer à plusieurs destinataires en 1
seule fois en affectant a .To la valeur de destinataire qui contient
l'ensemble des destinataires, tu peux améliorer ta solution ainsi, en
éléminant le Do ... Loop:

Function SendEmailCDO()
...
If Rs.BOF Then GoTo Exit_Function
While not Rs.EOF
destinataireÞstinataire & Rs!destmail & ";"
RS.MoveNext
Wend

With CreateObject("CDO.Message")
.From = ""
.To = Destinataire
.Subject = "Sujet"
'...
End With
Exit_Function:
Rs.Close
Set Rs = Nothing
Set Db = Nothing

End Function


ou les envoyer comme l'indiquait Raymond l'un pares l'autre et alors tu
utilises ta structure Do ... Loop mais sans le While ...Wend ce qui
donne:

Function SendEmailCDO()
...
If Rs.BOF Then GoTo Exit_Function
Do Until Rs.EOF
With CreateObject("CDO.Message")
.From = ""
.To = Rs!destmail
.Subject = "Sujet"
'...
End With
Rs.MoveNext
Loop
Exit_Function:
Rs.Close
Set Rs = Nothing
Set Db = Nothing

End Function

A+
Eric



"Xavier" écrivait


voici donc le code qui va bien

...
Do Until Rs.EOF

While Not Rs.EOF
Destinataire = Destinataire & Rs!destmail & ";"
Rs.MoveNext
Wend


With CreateObject("CDO.Message")
.From = ""
.To = Destinataire
.Subject = "Sujet"
.TextBody = "corp du message" _
& vbNewLine & vbNewLine _
& "Signature" & vbNewLine _
& "société" & vbNewLine _
& "Adresse société" & vbNewLine _
& "CP + VILLE"
'.AddAttachment ("C:Mes FichiersMon Fichier_1.ext")
'.AddAttachment ("C:Mes FichiersMon Fichier_2.ext")
On Error Resume Next
.Send
If Err Then MsgBox "Le message n'a pas pu être expédié."
On Error GoTo 0
End With
Loop

Exit_Function:
Rs.Close
Set Rs = Nothing
Set Db = Nothing

End Function

'------

Merci encore @ vous !!!!





Avatar
Raymond [mvp]
maintenant on sait que le multi fonctionne.
serait-il possible dans la boucle d'essai de glisser des erreurs d'adresses
pour savoir où se situe le retour ? Arnaud a disparu ce soir, il doit le
savoir.
ça pose toujours le problème que n'importe qui peut envoyer n'importe quoi à
partir du poste. Il suffit d'entrer sur le poste et balancer 60 messages à
la minute sans que personne ne se rende compte de rien. Disons que ça me
gêne un peu dans ma démarche (non intellectuelle)

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Eric" a écrit dans le message de
news:
Avatar
Eric
"Raymond [mvp]" écrivait
news:Ofulq$:

maintenant on sait que le multi fonctionne.
serait-il possible dans la boucle d'essai de glisser des erreurs
d'adresses pour savoir où se situe le retour ? Arnaud a disparu ce
soir, il doit le savoir.
ça pose toujours le problème que n'importe qui peut envoyer n'importe
quoi à partir du poste. Il suffit d'entrer sur le poste et balancer 60
messages à la minute sans que personne ne se rende compte de rien.
Disons que ça me gêne un peu dans ma démarche (non intellectuelle)



Bonsoir Raymond,

Vais paraître un peu idiot mais c'est quoi CDO ? Outlook2000 ou le centre
de documentation sur l'oeuf ? ,-)

Eric

Avatar
Raymond [mvp]
CDO - Collaboration Data Objects -

pour la doc tu repasseras cet hiver.

le CDO me fait le même effet que les api et les tables MSys. on va arriver à
ne plus utiliser le langage de la base elle-même mais les routines connexes
permettant de court-circuiter les contrôles de sécurité. Je trouve que ça ne
va pas dans le bon sens dans un groupe où on doit prêcher la bonne parole et
la sécurité. Je trouve que les api ont pris trop d'importance en regard du
développement normal d'une base. Le CDO prendra trop d'importance dans
quelques temps si on continue à lui donner l'importance qu'il ne doit pas
avoir dans Access. C'était ma minute de tristesse.
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Eric" a écrit dans le message de
news:

Bonsoir Raymond,

Vais paraître un peu idiot mais c'est quoi CDO ? Outlook2000 ou le centre
de documentation sur l'oeuf ? ,-)

Eric





Avatar
Raymond [mvp]
.../...

je voulais dire aussi que je serais partisan de la diffusion d'une DLL dans
laquelle seraient regroupées les api principales (10 à 15) ce qui aurait
l'avantage de tous avoir les mêmes fonctions et de ne pas faire appel aux
api directement.

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum
Avatar
Anor
Salut,

Raymond [mvp] wrote:
| maintenant on sait que le multi fonctionne.

j'ai pas tout suivi mais tant mieux ;-))

| serait-il possible dans la boucle d'essai de glisser des erreurs
| d'adresses pour savoir où se situe le retour ?


si adresse non valide (sans le @ par exemple, j'ai une erreur d'exécution -2147220977 (8004020f)
"recipient address rejected : need fully-qualified address.

si adresse inexistante, pas de retour, pas de sauvegarde dans les éléments envoyés.

Arnaud a disparu ce
| soir, il doit le savoir.
| ça pose toujours le problème que n'importe qui peut envoyer n'importe
| quoi à partir du poste. Il suffit d'entrer sur le poste et balancer
| 60 messages à la minute sans que personne ne se rende compte de rien.

oui si on veut se rendre compte de quelque chose, on utilise automation
et on patiente 5 secondes entre chaque message en cliquant sur 'oui' ;-)

à+
Arnaud
Avatar
Raymond [mvp]
Bonsoir Arnaud.

le tout c'est de le savoir. ce qui limite l'utilisation à l'envoi en nombre
ou aux messages bateaux. Dès qu'on veut avoir une trace il faut passer par
automation (en général on ne garde pas de trace des envois en nombre).

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Anor" <http://memoaccess.free.fr/anor/email.htm> a écrit dans le message de
news:e7hKpe%
Salut,

Raymond [mvp] wrote:
| maintenant on sait que le multi fonctionne.

j'ai pas tout suivi mais tant mieux ;-))

| serait-il possible dans la boucle d'essai de glisser des erreurs
| d'adresses pour savoir où se situe le retour ?


si adresse non valide (sans le @ par exemple, j'ai une erreur
d'exécution -2147220977 (8004020f)

"recipient address rejected : need fully-qualified address.

si adresse inexistante, pas de retour, pas de sauvegarde dans les éléments
envoyés.


Arnaud a disparu ce
| soir, il doit le savoir.
| ça pose toujours le problème que n'importe qui peut envoyer n'importe
| quoi à partir du poste. Il suffit d'entrer sur le poste et balancer
| 60 messages à la minute sans que personne ne se rende compte de rien.

oui si on veut se rendre compte de quelque chose, on utilise automation
et on patiente 5 secondes entre chaque message en cliquant sur 'oui' ;-)

à+
Arnaud




1 2