Pièces jointes sous outlook

Contenu du snippet

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'

A voir également

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.