IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

MAPI, suppression de message Outlook 2007


Sujet :

VB 6 et antérieur

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Mai 2008
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 3
    Points : 1
    Points
    1
    Par défaut MAPI, suppression de message Outlook 2007
    Bonjour,
    Je pense avoir fait le tour des forums et je ne trouve rien qui peut résoudre mon problème.
    Situation : VB 6 , Outlook 2007 , serveur Exchange.

    Je souhaite migrer de Outlook Express à Outlook 2007 et je possede des appli VB utilisant des composants MAPI qui fontionne correctement sous Express.
    J'ai reussi pour l'ensemble a le modifier pour Outlook 2007 mais encore un petit truc cloche nottament lorsque je souhaite supprimer un mail avec le composant delete, je ne retrouve plus celui-ci dans les elements supprimés.(et c'est indispensable pour pour le reste de l'appli ^^)

    Je poste donc mon code dans l'espoire que quelqu'un trouve une solution.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
             '----------------------
                'Commandes MAPI
                '----------------------
     
                    'NOUVELLE SESSION MAPI : REMETTRE EN EXPLOITATION
                        MAPISession.NewSession = False
     
                         With MAPIMessages
                         'Compose un nouveau mail
                         .Compose
                         'On indexe le message en court
                         .MsgIndex = -1
                         .RecipDisplayName = Mail_Adherent
                         'Sujet <TITLE>
                         .MsgSubject = "A TRANSMETTRE A L'OPERATEUR - STARE"
                         'Message <BODY>
                         .MsgNoteText = Alarme_Impression_Pas_Piece_Jointe
                         'MAPI messages utilise l'ID de la session pour travailler
                         .SessionID = MAPISession.SessionID
                         'Envoi sans afficher de boite sous jacente
                         .Send False
                        End With
     
                    Else
                    Piece_Jointe = True
     
            End If
     
    [PURGE DU TAMPON DE RECEPTION]
     
    'MAPI messages utilise l'ID de la session pour travailler
            MAPIMessages.SessionID = MAPISession.SessionID
            'Recupere les messages 'entrés'
            MAPIMessages.Fetch
     
    For Purge = 0 To MAPIMessages.MsgCount
           If Purge = MAPIMessages.MsgCount Then
           Exit For
                Else
                'Prend un message
                MAPIMessages.MsgIndex = Purge  
                'StatusBar
                StatusBar1.SimpleText = "Session en cours - thread n°" & I + 1 & " / " & Purge & " autoExec..."
     
                MAPIMessages.Delete
     
                Purge = Purge - 1
     
            End If
    Mon problème vient donc probablement de MAPIMessages.Delete dans la partie purge du tampon.
    Merci d'avence pour votre aide

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2007
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    Bonjour,

    MAPIMessages.Delete efface radicalement le mail, il n'est pas envoyé dans le répertoire 'éléments supprimés'.

    Si vous devez traiter le mail après sa "suppression", il va falloir le déplacer dans un dossier...

    Bonne journée

    Thierry

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Mai 2008
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Merci beaucoup Tskoey.
    Je n 'y avais pas pensé, je vais donc rechercher un composant move.

    Si d'ailleur tu as un exemple sur le sujet, n'hesite pas a le poster

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2007
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Set fldAnnee = fld.Folders(Trim(Year(mItem.CreationTime)))
    Set fldDestination = fldAnnee.Folders(Trim(Month(mItem.CreationTime)))
     
    mItem.Move fldDestination

    s'il te plait



    oué, dans mon exemple, si tu fais comme moi (tri des mails dans des dossiers années/mois), faut d'abord vérifier que les dossiers existent et les créer si pas...

  5. #5
    Nouveau Candidat au Club
    Inscrit en
    Mai 2008
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Encore merci pour ta réponse, mais si tu as extrait ton code d'une procédure pourrais tu me la faire parvenir entièrement svp ^^, car je n'arrive pas a l'adapter a mon cas.
    Je souhaite simplement que a la reception d'un mail, celui-ci ne se trouve pas dans la boite de reception mais dans un autre dossier personnel (dans mon cas le dossier supprimée)d'autant plus que ton tri m'interesse aussi.

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2007
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
     
    Dim objOutlook As Outlook.Application
    Dim nsOutlook As Outlook.NameSpace
    Dim oRecipient As Outlook.Recipient
    Dim fld As Outlook.MAPIFolder
    Dim mItem As Outlook.MailItem
    Dim item As Object
    Dim sousFolder As Outlook.MAPIFolder
    Dim sousSousFolder As Outlook.MAPIFolder
    Dim myNewYearFolder As MAPIFolder
    Dim myNewMonthFolder As MAPIFolder
    Dim blnFolderYear As Boolean
    Dim blnFolderMonth As Boolean
    Dim fldAnnee As MAPIFolder
    Dim fldDestination As MAPIFolder
     
    Set objOutlook = Outlook.Application
    Set nsOutlook = objOutlook.GetNamespace("MAPI")
     
    Set oRecipient = nsOutlook.CreateRecipient("DNB_Test")
     
    oRecipient.Resolve
     
    If oRecipient.Resolved Then
      Set fld = nsOutlook.GetSharedDefaultFolder(oRecipient, olFolderInbox)
     
      For Each item In fld.Items
        lbNbrMail.Caption = lngNbrMail
        If item.Class = olMail Then
          Set mItem = item
          If TypeName(mItem) = "MailItem" Then
              blnFolderMonth = False
              blnFolderYear = False
              For Each sousFolder In fld.Folders
                If sousFolder.Name = Year(mItem.CreationTime) Then
                  blnFolderYear = True
                  For Each sousSousFolder In sousFolder.Folders
                    If sousSousFolder.Name = Month(mItem.CreationTime) Then
                      blnFolderMonth = True
                    End If
                  Next
                End If
              Next
     
              If blnFolderYear = False Then
                  Set myNewYearFolder = fld.Folders.Add(Year(mItem.CreationTime))
                  Set myNewMonthFolder = myNewYearFolder.Folders.Add(Month(mItem.CreationTime))
              ElseIf blnFolderMonth = False Then
                  Set myNewYearFolder = fld.Folders(Trim(Year(mItem.CreationTime)))
                  Set myNewMonthFolder = myNewYearFolder.Folders.Add(Trim(Month(mItem.CreationTime)))
              End If
     
              Set fldAnnee = fld.Folders(Trim(Year(mItem.CreationTime)))
              Set fldDestination = fldAnnee.Folders(Trim(Month(mItem.CreationTime)))
     
              mItem.Move fldDestination
     
            End If
          End If
        Next
    Voilà

    il peut très certainement être nettoyé mais bon
    J'avoue que j'éai fait ce code à la va-vite sans vraiment y réfléchir...

    Par contre, j'utilise un traitement que je lance moi-même...
    Si tu veux faire ce traitement dès la réception d'un mail, vaudrait mieux aller voir du côté du vba outlook...

Discussions similaires

  1. messages outlook 2007
    Par bergho dans le forum Outlook
    Réponses: 0
    Dernier message: 18/01/2011, 15h31
  2. MAPI, Windows 7 et Outlook 2007 : Erreur 32002
    Par Najdar dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 19/02/2010, 10h10
  3. Regle de message outlook 2007
    Par peterparker dans le forum Outlook
    Réponses: 8
    Dernier message: 04/11/2007, 17h12
  4. [Outlook 2007] importer messages Thunderbird ?
    Par nbstn dans le forum Outlook
    Réponses: 4
    Dernier message: 12/07/2007, 12h14
  5. Outlook 2007 Réception des messages de réponse
    Par Cecilenze dans le forum Outlook
    Réponses: 1
    Dernier message: 02/04/2007, 09h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo