Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access
Access Forum d'entraide sur Microsoft Access. Avant de poster -> La F.A.Q Access
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 09/06/2011, 16h27   #1
Invité de passage
 
Femme
Conseil - Consultant en systèmes d'information
Inscription : juin 2011
Messages : 7
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Conseil - Consultant en systèmes d'information

Informations forums :
Inscription : juin 2011
Messages : 7
Points : 2
Points : 2
Par défaut Comment vérifier qu'un mail est bien envoyé - VBA Access

Bonjour

Pour envoyer des mails automatiquement en utilisant Outlook - VBA, j'ai utilisé la fonction suivante:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Dim i As Boolean
            Dim olApp   As outlook.Application
            Dim objMail As MailItem
            Set olApp = outlook.Application
            Set objMail = olApp.CreateItem(OlMailItem)
 
            With objMail
                    .BodyFormat = olFormatHTML
                    .To = Destinataire
                    .Subject = Subject
                    .Body = text
                    .Attachments.Add cFile
                    .Cc = listeCC
                    .Send ' Envoie la mail
 
             End With
          Set objMail = Nothing
Je veux m'assurer que mon mail est bien envoyé. Il existe pour MailItem la propriété "sent" qui renvoie boolean , mais je n'arrive pas à l'utiliser dans mon code. Avez vous une idée SVP
RAhmed est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/06/2011, 10h33   #2
Rédacteur

 
Avatar de ClaudeLELOUP
 
Homme Claude LELOUP
Chercheur de loisirs (ayant trouvé !)
Inscription : novembre 2006
Messages : 5 242
Détails du profil
Informations personnelles :
Nom : Homme Claude LELOUP
Âge : 66
Localisation : Belgique

Informations professionnelles :
Activité : Chercheur de loisirs (ayant trouvé !)
Secteur : Finance

Informations forums :
Inscription : novembre 2006
Messages : 5 242
Points : 11 040
Points : 11 040
Bonjour,


Pourquoi le mail ne serait-il pas envoyé ?

Si l’adresse est erronée (mauvaise structure) l’Err.Number = -2147467259 est renvoyée.
On peut donc la traquer dans la procédure d’envoi ou mieux, la prévenir en vérifiant la conformité de la structure de l'adresse lors de l’encodage dans la BDD par exemple comme ceci (copié, je ne sais plus où) :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Public Function eMailValide(sAdresse As String) As Boolean
Dim regEx As RegExp, occurrences As MatchCollection
On Error GoTo GestionErreur
'Vérifier si Microsoft VBScript Regular Expressions est présente
Application.References.AddFromGuid "{3F4DACA7-160D-11D2-A8E9-00104B365C9F}", 5, 5
'
Set regEx = New RegExp
regEx.Pattern = "^([\w_.-]+)@([\w]{2,})\.[a-z]{2,3}$"
regEx.Global = False 'Renvoyer seulement la première occurrence
Set occurrences = regEx.Execute(sAdresse)
eMailValide = (occurrences.Count = 1)
Exit Function
GestionErreur:
Select Case Err.Number
  Case 32813  ' la référence existe déjà
    Resume Next
  Case Else
    MsgBox "Erreur dans eMailValide" & vbLf & Err.Number & vbLf & Err.Description
End Select
End Function

Crains-tu d'autres cas ?
ClaudeLELOUP est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 11/06/2011, 11h59   #3
Expert Confirmé
 
Avatar de vodiem
 
Homme Diem VO
Vivre
Inscription : avril 2006
Messages : 2 644
Détails du profil
Informations personnelles :
Nom : Homme Diem VO
Âge : 40
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Vivre
Secteur : Conseil

Informations forums :
Inscription : avril 2006
Messages : 2 644
Points : 3 895
Points : 3 895
salut RAhmed et ClaudeLELOUP,

Code :
1
2
3
4
SendEmail = .Send
If IsEmpty(SendEmail) Then
...
End If


@ClaudeLELOUP: cas d'adresse obsolète, serveur occupé...
par ailleurs le pattern n'est pas très stricte...
vodiem est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/06/2011, 13h46   #4
Rédacteur

 
Avatar de ClaudeLELOUP
 
Homme Claude LELOUP
Chercheur de loisirs (ayant trouvé !)
Inscription : novembre 2006
Messages : 5 242
Détails du profil
Informations personnelles :
Nom : Homme Claude LELOUP
Âge : 66
Localisation : Belgique

Informations professionnelles :
Activité : Chercheur de loisirs (ayant trouvé !)
Secteur : Finance

Informations forums :
Inscription : novembre 2006
Messages : 5 242
Points : 11 040
Points : 11 040
Bonjour Vodiem,

Je suis loin d'être un spécialiste, mais j'utilise souvent... sans problème jusqu'ici. Du moins, je l'espère !

Citation:
cas d'adresse obsolète
Dans ce cas :
1er temps : le message part
2e temps : je reçois, après un certain temps, un message "Mail Delivery Subsystem" qui annonce que le destinataire est inconnu, ou que sa boîte est pleine... et je suis informé et si nécessaire, je réagis.

Citation:
serveur occupé
N'est-ce pas alors Outlook qui a le problème ?
Je suppose que Access va attendre tant que Outlook est bloqué.

Est-ce correct ?
ClaudeLELOUP est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/06/2011, 20h54   #5
Expert Confirmé
 
Avatar de vodiem
 
Homme Diem VO
Vivre
Inscription : avril 2006
Messages : 2 644
Détails du profil
Informations personnelles :
Nom : Homme Diem VO
Âge : 40
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Vivre
Secteur : Conseil

Informations forums :
Inscription : avril 2006
Messages : 2 644
Points : 3 895
Points : 3 895
bonsoir ClaudeLELOUP,

je ne connais pas l'objet outlook.Application pour connaitre les valeurs du .send et les origines qui peuvent lever ces erreurs.
le cas d'adresse obsolète ne dois pas être un bon exemple car il est fort probable que le send s'arrête effectivement à l'acheminement au serveur de courrier de l'expéditeur.
mais un acheminement trop long, une interruption dans la liaison, un filtrage d'adresse, de droits... font surement parti de ces cas où le send peut échouer sans pour autant que l'adresse ne soit pas valide.
dans le cas du cdo un délai trop long suffit à lever une erreur au send.

je n'ai pas étudié la question plus en détail pour pouvoir te répondre mais ce que je voulais souligner c'est que la validation d'adresse n'est pas suffisante pour garantir l'expédition.
il ne suffit pas de vérifier qu'une adresse existe pour s'assurer que le courrier y arrive.
vodiem est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 11/06/2011, 21h31   #6
Invité de passage
 
Femme
Conseil - Consultant en systèmes d'information
Inscription : juin 2011
Messages : 7
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Conseil - Consultant en systèmes d'information

Informations forums :
Inscription : juin 2011
Messages : 7
Points : 2
Points : 2
Bonsoir à vous deux,
et merci bcp pour votre réponse. Pour vodiem, est ce que vous pouvez m'expliquer le code que vs avez mis, et est ce qu'il suffit pour savoir si on mail et partie??

Code :
1
2
3
4
SendEmail = .Send
If IsEmpty(SendEmail) Then
...
End If


merci bcp pour votre aide.
RAhmed est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/06/2011, 00h47   #7
Expert Confirmé
 
Avatar de vodiem
 
Homme Diem VO
Vivre
Inscription : avril 2006
Messages : 2 644
Détails du profil
Informations personnelles :
Nom : Homme Diem VO
Âge : 40
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Vivre
Secteur : Conseil

Informations forums :
Inscription : avril 2006
Messages : 2 644
Points : 3 895
Points : 3 895
Code :
1
2
3
4
SendEmail = .Send
If IsEmpty(SendEmail) Then
... ' en cas de succès
End If
à vérifier car cela marche avec cdo mais la documentation officiel pour MailItem ne précise pas que cet emploi.
vodiem est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/06/2011, 06h35   #8
Rédacteur

 
Avatar de ClaudeLELOUP
 
Homme Claude LELOUP
Chercheur de loisirs (ayant trouvé !)
Inscription : novembre 2006
Messages : 5 242
Détails du profil
Informations personnelles :
Nom : Homme Claude LELOUP
Âge : 66
Localisation : Belgique

Informations professionnelles :
Activité : Chercheur de loisirs (ayant trouvé !)
Secteur : Finance

Informations forums :
Inscription : novembre 2006
Messages : 5 242
Points : 11 040
Points : 11 040
Merci Vodiem, c'est clair !
ClaudeLELOUP est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/06/2011, 16h45   #9
Invité de passage
 
Femme
Conseil - Consultant en systèmes d'information
Inscription : juin 2011
Messages : 7
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Conseil - Consultant en systèmes d'information

Informations forums :
Inscription : juin 2011
Messages : 7
Points : 2
Points : 2
Bonjour

Voila j'ai essayé de rajouter
Code :
1
2
SendEmail = .Send
If IsEmpty(SendEmail) Then
Mais ce ne marche pas, j 'ai erreur une erreur. comment introduire ce controle dans le code suivant:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Dim i As Boolean
            Dim olApp   As outlook.Application
            Dim objMail As MailItem
            Set olApp = outlook.Application
            Set objMail = olApp.CreateItem(OlMailItem)
 
            With objMail
                    .BodyFormat = olFormatHTML
                    .To = Destinataire
                    .Subject = Subject
                    .Body = text
                    .Attachments.Add cFile
                    .Cc = listeCC
                    .Send ' Envoie la mail
 
             End With
          Set objMail = Nothing
Merci pour votre aide
RAhmed est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 15h59.


 
 
 
 
Partenaires

Hébergement Web