Ce programme prends les mails dans la boite de reception d'Outlook et cherche tous ceux qui ont été envoyé par formulaire html. Pour ces mails, la pièce jointe (appelé POSTDATA.ATT) est enregistrée dans un répertoire et subit le traitement "enregistrement" que je n'ai pas détaillé ici.
Source / Exemple :
Option Compare Binary
Option Explicit
Public Sub messagerie()
Dim objOutlook As outlook.Application 'représente l'application outlook
Dim objItems As outlook.Items 'représente un objet outlook
Dim objMailItem As MailItem 'représente un mail
Dim PJ As Attachment 'représente un fichier joint
Dim mailIndex As Integer 'représente le numéro d'indexation des mails
Dim cpt As Integer 'compteur de mails traités
Dim msg As String 'message donnant le nombre de mail traité
Dim reponse 'affichage de msg
cpt = 0 'initialisation
Set objOutlook = New outlook.Application 'objOutlook devient l'application
Set objItems = objOutlook.GetNamespace("MAPI").GetDefaultFolder(olFolderInbox).Items
'objItems représente la boîte de reception
For mailIndex = 1 To objItems.Count 'pour index de mail allant de 1 au nb total de mail
Set objMailItem = objItems.Item(mailIndex) 'objMailItem devient le mail indexé par mailIndex
If objMailItem.Subject Like "Formulaire posté avec Microsoft Internet Explorer." Then
'si le sujet du mail est "Form..." alors
Set PJ = objMailItem.Attachments.Item(1) 'PJ reçoit la 1ere pîèce jointe de ce mail
'et la seule mais objMailItem.Attachemennts est
'l'ensemble de ses pièces jointes
'Il faut donc préciser le numéro de celui qui nous
'interresse
PJ.SaveAsFile "c:\sondage\" & PJ.DisplayName
'On sauve la pièce jointe dans le dossier sondage
'le fichier s'appelle comme la pièce jointe
Call enregistrement 'appel de la fonction enregistrement non présente
'(faite moi savoir si vous le voulez (c'est du traitement
'de chaine de caratères)
objMailItem.Delete 'destuction du mail
'qui entraine des changement dans l'indexation
'des mails
Set objItems = objOutlook.GetNamespace("MAPI").GetDefaultFolder(olFolderInbox).Items
'on recommence l'indexation
mailIndex = 0 'on remet l'index à 0 (cette instruction ne semble pas
'fonctionner ! ????
cpt = cpt + 1 'et on incrémente le nombre de mail traité
End If
Select Case mailIndex 'ces instructions servent à résoudre le problème
Case objItems.Count: Exit For 'de la réinitialisation de l'index (nécessaire après le delete !)
End Select 'Si l'index est égale au nombre de mail, il faut sortir.
'Si ces lignes ne sont pas écrites, l'index est incrémenté
'et devient donc > à la valeur d'arrêt.
'le programme continue la boucle for
'entrainant des bugs
Next
msg = cpt & " mail(s) traité(s)" 'enregistrement du message
reponse = MsgBox(msg, 0) 'affichage
End Sub
Conclusion :
Pas de bug connu.
Pour ceux que ça intéresse, j'ai aussi le code de l'enregistrement (ouverture de fichier, traitement de caractère pour enregistrer les données envoyé par formulaire (D)HTML dans Access. Pour le niveau, j'en sais rien vu que je débute en VB alors je vais mettre '2'
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.