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 :

C# + Microsoft Office 2010


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté

    Homme Profil pro
    Ingénieur DevOps
    Inscrit en
    Août 2009
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur DevOps

    Informations forums :
    Inscription : Août 2009
    Messages : 28
    Par défaut C# + Microsoft Office 2010
    Bonjour à toutes et à tous qui me liront,

    Je cherche à utiliser le pack Office 2010 (Word, Access et surtout Outlook) pour automatiser l'envoi d'e-mail.


    Voilà le besoin : je souhaite utiliser Microsoft Access en tant que base de données d'adresse mail et l'utiliser dans mon logiciel qui va remplir le champ Destinataire dans Microsoft Outlook pour automatiser l'envoi de mails.

    Je cherche aussi à utiliser Word pour lire son contenu et le mettre en corps de mail dans Outlook.


    Enfin je souhaite ouvrir Outlook par mon logiciel pour vérifier le tout et envoyer manuellement le mail.



    Concernant les champs a remplir, comment dois-je m'y prendre (les fonctions nécessaires, une API dédiée).

    D'après mes recherches il y a aussi les VSTO que je n'ai pas très bien compris. En effet, je souhaite faire cela par un logiciel externe développé par moi-même, or il semble que cette technologie soit faite pour créer des fonctions intra dans les logiciels du pack Office.

    J'ai trouvé ce tutoriel : http://heureuxoli.developpez.com/publipostage/
    Or je souhaite gérer tout cela par mon logiciel qui sera fait en C#.

    Merci.


    Cdlt,
    Ox

  2. #2
    Membre émérite

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2011
    Messages
    487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2011
    Messages : 487
    Par défaut
    Bonjour,

    Je ne connais pas le pilotage de ces applications, mais je crois que ça se trouve dans les espaces de noms Office.Interop.Word et Office.Interop.Access (Au risque de dire une bétise)

    Sinon, pourquoi vouloir utiliser outlook pour envoyer le mail ? Tu peux très bien le faire directement en C# grâce aux classes MailMessage et SmtpClient de l'espace de nom System.Net.Mail. il y a un exemple dans la FAQ : http://faqcsharp.developpez.com/?pag...#netw_sendmail

    Tu trouveras ton bonheur en piochant dans la msdn
    Mon blog sur les technos .NET et Agile -> http://blog.developpez.com/maximepalmisano/

  3. #3
    Membre expérimenté

    Homme Profil pro
    Ingénieur DevOps
    Inscrit en
    Août 2009
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur DevOps

    Informations forums :
    Inscription : Août 2009
    Messages : 28
    Par défaut
    Bonjour MaximePalmisano,

    Merci de m'avoir répondu aussi rapidement.
    J'ai déjà été rapidement sur msdnn et, en effet, mes recherches m'ont amené sur les classes Microsoft.Office.Interop.(Word-Access-Outlook).
    De plus sur le site il est indiqué d'utiliser des PIA(primary interop assembly) ou les VSTO (visual Studio Tools for Office) -> honnetement je ne comprend pas grand chose face à tout ça.

    J'ai bien entendu des exemples de codes mais rien qui m'assure que mon document Word sera bien présenté tel quel dans le corps du mail. Cela est important d'où le fait d'utiliser Outlook pour vérifier le message avant de l'envoyer.

    Pourquoi Outlook? Il y a plusieurs raisons :
    -c'est dans le cahier des charges;
    -cela permet d'avoir une synergie entre le pack Office;
    -nous pouvons déterminer les adresses mail non valide;

    Il doit aussi y avoir encore quelques raisons obscures...

    Mes recherches ont abouti à ces quelques bouts de code :
    Pour Outlook :

    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
    using Microsoft.Office.Interop;
    //this example need reference of microsoft word object library and outlook object library
    public class Form1
    {
      private object oMissing = System.Reflection.Missing.Value;
     
      private void  // ERROR: Handles clauses are not supported in C#
    btnGenerate_Click(System.Object sender, System.EventArgs e)
      {
        string strSubject = "subject test";
        string strMessage = "message test";
        string astrRecip = "recipientMe@mail.org";
        string astrAttachments = txtPath.Text;
     
        Outlook.Application OutlookApp = new Outlook.Application();
        Outlook.MailItem MyEMail = OutlookApp.CreateItem(Outlook.OlItemType.olMailItem);
     
        foreach (string Recipient in Split(astrRecip, ";")) {
          MyEMail.Recipients.Add(Recipient);
        }
        foreach (string Attachment in Split(astrAttachments, ";")) {
          MyEMail.Attachments.Add(Attachment);
        }
     
        MyEMail.Subject = strSubject;
        MyEMail.HTMLBody = getWordDoc(astrAttachments);
     
        MyEMail.Display();//mettre a true
      }
    Pour Word :
    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
    private object getWordDoc(string filename)
      {
        Word.Application wordApp = new Word.ApplicationClass();
        Word._Document wordDoc;
        object content = "";
     
        wordApp.Visible = false;
     
        wordDoc = wordApp.Documents.Open((object)filename, oMissing, true, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, 
        oMissing, oMissing, oMissing, oMissing, oMissing, oMissing);
     
        wordDoc.Content.Select();
        wordDoc.Content.Copy();
     
        IDataObject objClipboard = Clipboard.GetDataObject();
        if (objClipboard.GetDataPresent(DataFormats.Html)) content = objClipboard.GetData(DataFormats.Html); 
     
        wordApp.Quit((object)false, oMissing, oMissing);
     
        wordDoc = null;
        wordApp = null;
        return content;
      }
    }
    Voilà,

    Cdlt,
    Ox

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    1 002
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 002
    Par défaut
    Bonjour,

    Je crois qu'il y a une librairie qui permet de piloter Outlook ca s'appel MAPI si je ne m'abuse... A tu déja regardé de ce coté la (pour créer et ouvrir un mail)

    Sinon concernant VSTO, ca sert belle est bien à créer des add-in dans Office (donc pas de pilotage via un logiciel externe pour employer tes mots)
    Et pour PIA, c'est une libraire plus bas niveau qui permet de piloter office via des objet COM.


    j'ai pas compris par contre le passage avec WORD.

    Je comprend que t'as une application qui lit une base Access, OK.
    Puis tu créé un mail, t'ouvres outlook pour que le type puisse valider, OK (peut etre que MAPI te sera utile, espérons...)
    Mais que vient faire Word ??? (tu veux faire de la fusion / publipostage avec ?)

  5. #5
    Membre expérimenté

    Homme Profil pro
    Ingénieur DevOps
    Inscrit en
    Août 2009
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur DevOps

    Informations forums :
    Inscription : Août 2009
    Messages : 28
    Par défaut
    Bonjour alavoler,


    Désolé de te répondre aussi tardivement je ne pensais pas qu'on me répondrais...

    Word servira à "rédiger" le corps du mail.

    La personne tape son mail avec sa mise en page. Moi je récupère le contenu du document. En somme, je transfère dans outlook :
    -le contenu de la bdd Access contenant les adresses mail en guise de destinataire;
    -le contenu de Word en guise de corps de mail;
    Puis j'ouvre Outlook pour une vérification.
    Enfin la personne envoi manuellement ses e-mails grâce à outlook ouvert.

    Pourquoi Word? Pour pouvoir avoir une synergie entre le pack Office entre quasiment tous les composants principaux.

    J'ai vu sur MSDN MAPI, comme dit précédemment je ne sais pas trop à quoi elle sert mais je regarderais si elle peut m'être utile.

    Encore merci,

    Ox

Discussions similaires

  1. Réponses: 14
    Dernier message: 18/07/2009, 15h43
  2. La bande annonce de Microsoft Office 2010 déjà dévoilée
    Par Tofalu dans le forum Microsoft Office
    Réponses: 0
    Dernier message: 09/07/2009, 18h41
  3. Microsoft Office 2010 : les premières images disponibles
    Par Tofalu dans le forum Microsoft Office
    Réponses: 4
    Dernier message: 08/07/2009, 21h09
  4. Microsoft Office 2010 : les premières images disponibles
    Par Tofalu dans le forum Actualités
    Réponses: 0
    Dernier message: 07/07/2009, 21h45
  5. Microsoft Office 2010 : un avant goût
    Par Annaelle32 dans le forum Actualités
    Réponses: 0
    Dernier message: 01/07/2009, 10h46

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