OVH Cloud OVH Cloud

Problème d'envoi automatique de mail via Send Object

3 réponses
Avatar
Florent
Bonjour, voici le code que j'utilise pour envoyer des=20
mails group=E9s :=20

Function EnvoiEnNombre()

Dim strSujet As String
Dim strMsg As String
Dim cnn As ADODB.Connection
Dim rst As ADODB.Recordset

' Ouverture des tables Candidat et Candidature
Set cnn =3D CurrentProject.Connection
Set rst =3D New ADODB.Recordset
rst.Open "SELECT * FROM [Candidat] WHERE NOT IsNull
([Candidat].[E-mail]);", cnn

'Sujet du message
strSujet =3D "Votre Candidature"

'Envoi d'un e-mail par personne
While Not rst.EOF
'Constitution du message personnalis=E9
strMsg =3D "Bonjour " & rst("Etat Civil") & " " & rst
("Nom") & " " & rst("Pr=E9nom")
=20
'Envoi du message
DoCmd.SendObject acSendNoObject, , , _
rst("E-mail"), , , strSujet, _
strMsg, True
=20
'Candidat suivant
rst.MoveNext
=20
Wend

'Fermeture et lib=E9ration des objets
rst.Close
Set rst =3D Nothing
cnn.Close
Set cnn =3D Nothing

End Function

Je g=E9n=E8re donc automatiquement l'=E9tat civil, le nom et le=20
pr=E9nom d'un candidat, le probl=E8me est que ce syst=E8me=20
plante apr=E8s l'envoi du premier e-mail. Il cause une=20
erreur sur le fichier kernel32.dll (fichier syst=E8me de=20
windows).
Par contre, lorsque je ne g=E9n=E8re n,i l'=E9tat civil, ni le=20
nom, ni le pr=E9nom, alors l'envoi se passe sand probl=E8me.
Pour info, ma messagerie par d=E9faut est outlook et donc le=20
serveur de mail est microsoft exchange.

Quelqu'un peut-il m'aider ?

3 réponses

Avatar
Fred M.
Bonjour Florent,
Je ne réponds pas directement à ta qstion mais propose
plutot une voix de contournement : pourquoi ne pas essayer
une automation en pilotant directement Outlook ?
Il te suffit d'ajouter la référence DLL qui va bien (Ms
Outlook 9.0 object library) et de générer des mails par
boucles :

Dim MonMail As MailItem
Set myOlApp = CreateObject("Outlook.Application")
'Création du mail
Set MonMail = myOlApp.CreateItem(olMailItem)
'Création du destinataire
Set MonDest = MonMail.Recipients.Add("Jon Grande")
' Objet du mail
MonMail.Subject = "mon sujet"
' Corps du mail
MonMail.Body = "coucou"

' Affichage du mail...
MonMail.Display
' ... ou alors envoie direct du mail
MonMail.Send

Voili voilou.... prend cette solution qui veut :-)

Fred M.
-----Message d'origine-----
Bonjour, voici le code que j'utilise pour envoyer des
mails groupés :

Function EnvoiEnNombre()

Dim strSujet As String
Dim strMsg As String
Dim cnn As ADODB.Connection
Dim rst As ADODB.Recordset

' Ouverture des tables Candidat et Candidature
Set cnn = CurrentProject.Connection
Set rst = New ADODB.Recordset
rst.Open "SELECT * FROM [Candidat] WHERE NOT IsNull
([Candidat].[E-mail]);", cnn

'Sujet du message
strSujet = "Votre Candidature"

'Envoi d'un e-mail par personne
While Not rst.EOF
'Constitution du message personnalisé
strMsg = "Bonjour " & rst("Etat Civil") & " " & rst
("Nom") & " " & rst("Prénom")

'Envoi du message
DoCmd.SendObject acSendNoObject, , , _
rst("E-mail"), , , strSujet, _
strMsg, True

'Candidat suivant
rst.MoveNext

Wend

'Fermeture et libération des objets
rst.Close
Set rst = Nothing
cnn.Close
Set cnn = Nothing

End Function

Je génère donc automatiquement l'état civil, le nom et le
prénom d'un candidat, le problème est que ce système
plante après l'envoi du premier e-mail. Il cause une
erreur sur le fichier kernel32.dll (fichier système de
windows).
Par contre, lorsque je ne génère n,i l'état civil, ni le
nom, ni le prénom, alors l'envoi se passe sand problème.
Pour info, ma messagerie par défaut est outlook et donc
le

serveur de mail est microsoft exchange.

Quelqu'un peut-il m'aider ?
.



Avatar
Florent
Bonjour,

Tou d'abord je te remercie de m'avoir répondu, maintenant
je vais t'expliquer le problème en profondeur.

Passer par outlook a été, en fait, ma première idée. Le
problème, est qu'il n'a jamais voulu me créer le
destinataire (pourtant ma syntaxe est la même que la
tienne). A chaque le débugger m'envoyer sur la syntaxe de
création du destinataire. Lorsque je la mettais en
commentaire, la fonction marchant sans pb. Mais sans
destinataire on va pas loin. Et j'ai bien vérifié que la
bibliothèque outlook était sélectionnée.

Donc me voici revenu à la case départ.

Toutefois, merci de m'avoir proposé une solution






-----Message d'origine-----
Bonjour Florent,
Je ne réponds pas directement à ta qstion mais propose
plutot une voix de contournement : pourquoi ne pas
essayer

une automation en pilotant directement Outlook ?
Il te suffit d'ajouter la référence DLL qui va bien (Ms
Outlook 9.0 object library) et de générer des mails par
boucles :

Dim MonMail As MailItem
Set myOlApp = CreateObject("Outlook.Application")
'Création du mail
Set MonMail = myOlApp.CreateItem(olMailItem)
'Création du destinataire
Set MonDest = MonMail.Recipients.Add("Jon Grande")
' Objet du mail
MonMail.Subject = "mon sujet"
' Corps du mail
MonMail.Body = "coucou"

' Affichage du mail...
MonMail.Display
' ... ou alors envoie direct du mail
MonMail.Send

Voili voilou.... prend cette solution qui veut :-)

Fred M.
-----Message d'origine-----
Bonjour, voici le code que j'utilise pour envoyer des
mails groupés :

Function EnvoiEnNombre()

Dim strSujet As String
Dim strMsg As String
Dim cnn As ADODB.Connection
Dim rst As ADODB.Recordset

' Ouverture des tables Candidat et Candidature
Set cnn = CurrentProject.Connection
Set rst = New ADODB.Recordset
rst.Open "SELECT * FROM [Candidat] WHERE NOT IsNull
([Candidat].[E-mail]);", cnn

'Sujet du message
strSujet = "Votre Candidature"

'Envoi d'un e-mail par personne
While Not rst.EOF
'Constitution du message personnalisé
strMsg = "Bonjour " & rst("Etat Civil") & " " & rst
("Nom") & " " & rst("Prénom")

'Envoi du message
DoCmd.SendObject acSendNoObject, , , _
rst("E-mail"), , , strSujet, _
strMsg, True

'Candidat suivant
rst.MoveNext

Wend

'Fermeture et libération des objets
rst.Close
Set rst = Nothing
cnn.Close
Set cnn = Nothing

End Function

Je génère donc automatiquement l'état civil, le nom et
le


prénom d'un candidat, le problème est que ce système
plante après l'envoi du premier e-mail. Il cause une
erreur sur le fichier kernel32.dll (fichier système de
windows).
Par contre, lorsque je ne génère n,i l'état civil, ni le
nom, ni le prénom, alors l'envoi se passe sand problème.
Pour info, ma messagerie par défaut est outlook et donc
le

serveur de mail est microsoft exchange.

Quelqu'un peut-il m'aider ?
.

.





Avatar
Fred M.
Re.
arf, si c'est MonMail.Recipients.Add("Jon Grande") ne
fonctionne pas sur ta machine alors là je ne vois vraiment
pas quoi faire :-( désolé.
si ce n'est utiliser la proc. stockée étendue XpSendMail
de SQL server mais faut-il encore l'avoir...

Cela étant dit, une erreur du Kernel32 n'est jamais de
très bonne augure pour l'ensemble du système...
Encore désolé de sécher ici.
Bon courage.
-----Message d'origine-----
Bonjour,

Tou d'abord je te remercie de m'avoir répondu, maintenant
je vais t'expliquer le problème en profondeur.

Passer par outlook a été, en fait, ma première idée. Le
problème, est qu'il n'a jamais voulu me créer le
destinataire (pourtant ma syntaxe est la même que la
tienne). A chaque le débugger m'envoyer sur la syntaxe de
création du destinataire. Lorsque je la mettais en
commentaire, la fonction marchant sans pb. Mais sans
destinataire on va pas loin. Et j'ai bien vérifié que la
bibliothèque outlook était sélectionnée.

Donc me voici revenu à la case départ.

Toutefois, merci de m'avoir proposé une solution






-----Message d'origine-----
Bonjour Florent,
Je ne réponds pas directement à ta qstion mais propose
plutot une voix de contournement : pourquoi ne pas
essayer

une automation en pilotant directement Outlook ?
Il te suffit d'ajouter la référence DLL qui va bien (Ms
Outlook 9.0 object library) et de générer des mails par
boucles :

Dim MonMail As MailItem
Set myOlApp = CreateObject("Outlook.Application")
'Création du mail
Set MonMail = myOlApp.CreateItem(olMailItem)
'Création du destinataire
Set MonDest = MonMail.Recipients.Add("Jon Grande")
' Objet du mail
MonMail.Subject = "mon sujet"
' Corps du mail
MonMail.Body = "coucou"

' Affichage du mail...
MonMail.Display
' ... ou alors envoie direct du mail
MonMail.Send

Voili voilou.... prend cette solution qui veut :-)

Fred M.
-----Message d'origine-----
Bonjour, voici le code que j'utilise pour envoyer des
mails groupés :

Function EnvoiEnNombre()

Dim strSujet As String
Dim strMsg As String
Dim cnn As ADODB.Connection
Dim rst As ADODB.Recordset

' Ouverture des tables Candidat et Candidature
Set cnn = CurrentProject.Connection
Set rst = New ADODB.Recordset
rst.Open "SELECT * FROM [Candidat] WHERE NOT IsNull
([Candidat].[E-mail]);", cnn

'Sujet du message
strSujet = "Votre Candidature"

'Envoi d'un e-mail par personne
While Not rst.EOF
'Constitution du message personnalisé
strMsg = "Bonjour " & rst("Etat Civil") & " " & rst
("Nom") & " " & rst("Prénom")

'Envoi du message
DoCmd.SendObject acSendNoObject, , , _
rst("E-mail"), , , strSujet, _
strMsg, True

'Candidat suivant
rst.MoveNext

Wend

'Fermeture et libération des objets
rst.Close
Set rst = Nothing
cnn.Close
Set cnn = Nothing

End Function

Je génère donc automatiquement l'état civil, le nom et
le


prénom d'un candidat, le problème est que ce système
plante après l'envoi du premier e-mail. Il cause une
erreur sur le fichier kernel32.dll (fichier système de
windows).
Par contre, lorsque je ne génère n,i l'état civil, ni
le



nom, ni le prénom, alors l'envoi se passe sand problème.
Pour info, ma messagerie par défaut est outlook et donc
le

serveur de mail est microsoft exchange.

Quelqu'un peut-il m'aider ?
.

.


.