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

C# Discussion :

Drag&Drop d'un mail Outlook et l'enregistrer. [Débutant]


Sujet :

C#

  1. #1
    Débutant  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 571
    Points : 353
    Points
    353
    Par défaut Drag&Drop d'un mail Outlook et l'enregistrer.
    Bonjour tout le monde,

    Je suis entrain de réaliser une application qui à pour but de faire un Drag&Drop d'un e-mail Outlook et de l'enregistrer dans un dossier.

    Voici mon code :
    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
     
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using Office = Microsoft.Office.Core;
    using Outlook = Microsoft.Office.Interop.Outlook;
     
    namespace WindowsFormsApplication1
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
     
            private void panel1_Paint(object sender, PaintEventArgs e)
            {
     
            }
     
            private void panel1_DragEnter(object sender, DragEventArgs e)
            {
                // e.Effect = DragDropEffects.All;
     
                // Pour ce programme, nous permettons à un fichier à supprimer à partir d'Explorer 
                  if (e.Data.GetDataPresent (DataFormats.FileDrop))
                        e.Effect = DragDropEffects.Copy;
                   // Ou cela nous dit si elle est une baisse de fixation Outlook 
                  else if (e.Data.GetDataPresent ("FileGroupDescriptor"))
                        e.Effect = DragDropEffects.Copy;
                   // Ou aucune de ces réponses 
                else
                   e.Effect = DragDropEffects.None;
            }
     
            private void panel1_DragDrop(object sender, DragEventArgs e)
            {
                // Exemple de code prit sur le lien suivant "http://www.developpez.net/forums/d1161973/dotnet/langages/csharp/csharp-sauvegarder-email-fichier-attacher-msg/".
                Outlook.MailItem mail = (Outlook.MailItem)selection[1];
                mail.SaveAs(@"C:\TEST\test.msg", Outlook.OlSaveAsType.olMSG);
            }
        }
    }
    Malheureusement cela ne fonctionne pas car quand je lance mon application, il m'indique qu'il y a des "erreurs de build" et donc si je ne souhaite pas continuer, voici ce que j'obtiens comme message d'erreur :
    Erreur 1 Le nom 'selection' n'existe pas dans le contexte actuel C:\Users\utilisateur\Documents\Visual Studio 2010\Projects\DragDropOutlook\DragDropOutlook\Form1.cs
    Si je continue, le Drag&Drop se fait mais pas l'enregistrement on dirait.

    Quelqu'un pourrait-il m'aider à faire en sorte que ce mail s'enregistre dans le dossier "TEST" s'il vous plaît ?!

    Merci par avance.
    Loïc.

  2. #2
    Membre actif
    Homme Profil pro
    Analyste Programmeur
    Inscrit en
    Septembre 2008
    Messages
    176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste Programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 176
    Points : 297
    Points
    297
    Par défaut
    Bonjour,

    L'erreur est pourtant très parlante...

    selection n'existe pas.

    Recopier un bout de code d'un autre thread sans même chercher à le comprendre n'amène jamais à grand chose.

    Bonne continuation.
    L’aléatoire n’existe pas en informatique, c’est juste un moyen de dire que l’on a pas encore compris.

  3. #3
    Débutant  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 571
    Points : 353
    Points
    353
    Par défaut
    Bonjour,

    J'ai compris le message que selection n'existe pas.
    Mais je vois pas comment faire afin qu'il existe. De quel type doit-il être....
    Je commence tout juste en C# et donc je galère un peu!!

    J'ai essayé ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    private void panel1_DragDrop(object sender, DragEventArgs e)
            {
                Outlook.MailItem item = null;
                item = sender as Outlook.MailItem;
                item.SaveAs(@"C:\TEST\test.msg", Outlook.OlSaveAsType.olMSG);
     
            }
    Mais une fois que je drag&drop mon mail, au moment de l'enregistrement, j'obtiens ce message :
    La référence d'objet n'est pas définie à une instance d'un objet.
    en surlignant en jaune :
    "item.SaveAs(@"C:\TEST\test.msg", Outlook.OlSaveAsType.olMSG);"

    J'ai besoin de votre aide s'il vous plaît!!
    Merci par avance

  4. #4
    Débutant  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 571
    Points : 353
    Points
    353
    Par défaut
    Re,

    J'ai résolu mon problème ci-dessus "La référence d'objet n'est pas définie à une instance d'un objet." en faisant le code suivant :
    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
     
    private void panel1_DragDrop(object sender, DragEventArgs e)
            {
                 // Récupération valeur du textBox.
                 //MessageBox.Show(textBox1.Text);
     
                try
                {
                    Outlook.MailItem item = new Outlook.MailItem();
                    //item = sender as Outlook.MailItem;
                    item.SaveAs(@"C:\TEST\test.msg", Outlook.OlSaveAsType.olMSG);
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }
    Mais à présent j'obtiens le message d'erreur suivant :
    La récupération de la fabrique de classes COM pour le composant avec le CLSID {00061033-0000-0000-C000-000000000046} a échoué en raison de l'erreur suivante*: 80040154 Classe non enregistrée (Exception de HRESULT : 0x80040154 (REGDB_E_CLASSNOTREG)).
    Je suis un peu coincé, je pense qu'il me manque une DLL ou autre mais je voit pas comment faire pour le moment, si quelqu'un à une idée, je suis preneur!!
    Pour information, j'utilise Microsoft Visual C# 2010 Express.

    Merci par avance.

  5. #5
    Débutant  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 571
    Points : 353
    Points
    353
    Par défaut
    J'ai réussit à faire ce que je souhaitez faire.
    Voici le code pour ceux que ça peux intéresser :
    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
     
    private void panel1_DragDrop(object sender, DragEventArgs e)
            {
                try
                {
                    Outlook.Application app = new Outlook.Application();
                    object temp = app.ActiveExplorer().Selection[1];
                    Outlook.MailItem item = (temp as Outlook.MailItem);
                    item.SaveAs(@"C:\TEST\test.msg", Outlook.OlSaveAsType.olMSG);
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }
    Merci pour l'aide!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 02/05/2011, 14h22
  2. Drag'n'Drop site web to outlook
    Par guigui69 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 24/09/2010, 15h43
  3. [Yahoo UI] Drag and Drop Style yahoo mail
    Par namstou3 dans le forum Bibliothèques & Frameworks
    Réponses: 1
    Dernier message: 03/10/2007, 19h30
  4. [C#] Drag & Drop d'un mail depuis Outlook
    Par therock dans le forum Windows Forms
    Réponses: 3
    Dernier message: 05/10/2006, 17h29

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