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

API, COM et SDKs Delphi Discussion :

Récupérer le code HTML d'un mail dans Outlook


Sujet :

API, COM et SDKs Delphi

  1. #1
    Membre habitué

    Homme Profil pro
    Informaticien retraité
    Inscrit en
    Mars 2010
    Messages
    287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Informaticien retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2010
    Messages : 287
    Points : 164
    Points
    164
    Billets dans le blog
    1
    Par défaut Récupérer le code HTML d'un mail dans Outlook
    J'utilise Delphi 6 Personal Edition, sousWindows 10 dernière version, toutes mises à jour faires.
    J'utilise Outlook 2007.

    Je suis en train de créer un composant contrôlant Outlook via COM. J'arrive à trouver la liste des dossiers, et en sélectionnant un dossier, j'arrive à trouver la liste des mails dans ce dossier, tout en sachant retrouver ne nom et l'adresse mail de l'expéditeur, le sujet du mail, sa date d'envoi etc.

    J'arrive à récupérer le code HTML du mail; mais dans un fichier seulement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      vDossier.Items(ind).SaveAs('c:\temp\tempmsg.msg', olHTML);
    vDossier est ub variant OLD contenant ne dossier sélectionné, et ind est l'indice de la ligne sélectionnée (1, 2, ...).

    Mais je voudrais éviter de créer et supprimer des fichiers temporaires en copiant le code HTML du mail sélectionné dans un TMemoryStream. De là, je pourrai facilement le traiter pour la suite. Seulement voilà: je n'arrive pas à trouver l'équivalent de SaveAs pour écrire dans un stream. Un objet MemoryStream semble interdit comme paramètre dans une commande OLE.

    Est-ce que vous auriez une solution à mon problème ?
    Est-ce que je dois me contenter de la solution par fichiers temporaires ce qui est lourd mais opérationnel ?

    Merci d'avance pour votre aide !

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 473
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 473
    Points : 24 930
    Points
    24 930
    Par défaut
    Question : Pourquoi Outlook ?
    Prendre à la source en IMAP4 (via Indy9) voir même en GRAPH (Indy9 aussi faut juste faire un petit wrapper REST, quoi que la partie OAuth2 avec les headers surement un peu pénible) n'aurait-il pas été plus pérenne pour un bot d'aspiration de mail ?

    Je ne pose même pas la question pourquoi D6 et non le dernier Communauty


    Sinon, pour éviter que l'on cherche, c'est quoi le nom de la classe retournée par Items() ?
    MailItem ?
    Voir Body et OlBodyFormat olFormatHTML
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Membre habitué

    Homme Profil pro
    Informaticien retraité
    Inscrit en
    Mars 2010
    Messages
    287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Informaticien retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2010
    Messages : 287
    Points : 164
    Points
    164
    Billets dans le blog
    1
    Par défaut
    Pourquoi Outlook ?
    Je dirais plutôt: pourquoi pas Outlook ? Il se trouve que j'ai Outlook et que j'aimerais pour le "tripatouiller", en fait le cacher et l'accéder via un frontal de mon cru. C'est mon souhait, et je ne vois pas pourquoi ce ne serait pas possible.

    Je ne pose même pas la question pourquoi D6 et non le dernier Communauty
    Depuis 10 ans, je développe une DLL de soutien à un langage dont je suis fan. Il s'agit d'un clône de Basic, conçu et développé par une seule personne dans son temps libre, avec une communauté d'utilisateurs qui est petite mais active et motivée. Ce langage étant créé lui-même en Delphi 6, il a paru judicieux au départ d'utiliser le même langage pour ma bibliothèque de soutien, une seule et grande DLL avec plus de 1100 fonctions exportées actuellement. La migration vers Delphi 7 et vers Lazarus a été un échec - trop d'incompatibiliées dans de petits détails du code, rendant nécessaire la réécriture d'une large du cide.

    Pour ces raisons, je suis resté avec mon Delphi 6 Personal Edition, bien qu'il y ai de multiples restrictions.

    Je ne connaissais pas la Community Edition. Je l'ai téléchargé, je vais l'installer et tester. Mais je redoute le même genre de problèmes qu'avec Lazarus, excellent produit par ailleurs...

    Prendre à la source en IMAP4 (via Indy9) voir même en GRAPH (Indy9 aussi faut juste faire un petit wrapper REST, quoi que la partie OAuth2 avec les headers surement un peu pénible) n'aurait-il pas été plus pérenne pour un bot d'aspiration de mail ?
    Peut-être... D'abord,, je n'ai jamais réussi à intégrer Indy dans mon Delphi 6 PE. Je n'ai pas vraiment compris pourquoi ça n'a pas marché, mais j'ai toujours trouvé des alterntives sans Indy pour parvenir à mes fins. Jusqu'à maintenant, ça n'a pas été bloquant.

    D'ailleurs, sur les différents forums, il y a pas mal de voix pour déconseilelr IMAP dans une optique d'autimatisation de Outlook. Ceci m'a refroidi par rapport à l'utiisation de IMAP.

    Sinon, pour éviter que l'on cherche, c'est quoi le nom de la classe retournée par Items() ?
    MailItem ?
    Je ne sais pas. Contrairement aux objets Delphi normaux, un élément OLE placé dans une variable variant peut recevoir des complément sous forme de méthode du style variable.méthode, mais Delphi n'affiche pas les choix possibles lorsqu'un saisit le ".". Ainsi, j'ai trouvé ma méthode ".SaveAs" sur internet, mais aucune liste complète des méthodes et propriétés applicables. De plus, je ne crois pas que la notion de "ClassName" ait vraiment un sens ici - ce ne sont pas des classes, mais des objets DOM de Outlook, d'après ce que j'ai compris.

  4. #4
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 069
    Points : 41 034
    Points
    41 034
    Billets dans le blog
    62
    Par défaut
    Citation Envoyé par ShaiLeTroll Voir le message
    Question : Pourquoi Outlook ?
    Oui, moi aussi je me pose la question ! Surtout que les dernières version d'Outlook ont quand même une sorte de format propriétaire difficile à traiter (d'un autre côté je ne suis pas fan)

    les dernières fois (un bail, avec D3,D7 ou D2010) où je me suis battu avec le traitement d'emails dans outlook je suis passé par les composants smimportsuite (plus exactement TSMImportFromOutlook). Cette application n'a jamais vu le jour dans la boite chaque poste ayant des versions différentes de Outlook ou utilisant Thunderbird ou pire le dernier lecteur Mail de MS Windows 10
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  5. #5
    Membre habitué

    Homme Profil pro
    Informaticien retraité
    Inscrit en
    Mars 2010
    Messages
    287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Informaticien retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2010
    Messages : 287
    Points : 164
    Points
    164
    Billets dans le blog
    1
    Par défaut
    J'entends bien, SergioMaster. mais ce composant, comme tant d'autres, est payant. Et je ne prends que des composants entièrement libres.

    Je suis un indépendant, retraité de 72 ans, et je programme pour mon plaisir. Souvent, j'ai plaisir à trouver des satisfactions à trouver des solutions techniques pour des problèmes rencontrés par ma communauté des utilisateurs de ce langage style Basic auquel je m'intéresse? Mais pas seulement. Je développe aussi pour mes propres projets perso, juste pour le fun. Et j'aime me poser des défins et en trouver une solution. L'accès à Outlook fait partie de cette dernière catégorie.

    J'ai Outlook depuis toujours. Actuellement, j'ai la version 2007, et j'utilise exclusivement la partie courrier, rien d'autre dans Outlook. Initialement, il y a des années, j'utilisais différents clients mail en freeware. Et tous m'on déçu à un moment ou un autre. Puis, je suis passé à Outlook Express. C'était la solution de tous mes problèmes de messagerie. Or, à un moment, MicroSoft a cessé de supporter Outlook Express. Pire, son exécution était bloqué. Je suis donc passé sous Outlook, avec la version 2003 à l'époque. Puis, la version 2003 a également été bloqué par MicroSoft. Je suis donc passé à la version 2007 et j'y suiis depuis.

    Cependant, c'est une usine à gaz. Au quotidien, j'en utilise peut-être 5 % de ses fonctionnalités, et encore... J'ai donc choisi de créer la propre interface et d'accéder vraiment à Outlook uniquement pour des tâches particulières. Même les sauvegardes sont complexes avec Outlook, et je voulais faire mon propre système de sauvegarde, automatisée, en incluant tous les profils que j'ai créés, et non seulement le profil principal, tel que c'est le cas dans la plupart des outils tiers de sauvegarde.

    J'ai donc vu que Outlook, tout comme tous les composant de Office, a une interface COM. Et je me suis mis à tenter le coup. C'est compliqué, mais c'est justement ce qui me plaît.

    Dans le proplème posé par mon post initial, on voit bien que je ne suis pas bloqué. J'ai une solutiion pour trouver le code HTML d'un mail, en passabt par un fichier temporaire. Seulement, je trouve cela inélégant et lourd, quoque fonctionnel. J'utilise par ailleurs les streams (mémoire, fichiers, ...) avec succès. Et tous lescomposants Delphi qui m'intéressent, peuvent être sérialisées dans un stream, et, au besoin, je peux dériver le composant et implémenter cette méthode moi-même (TStringGrid, tous les compsoants que j'ai créés, ...).

    Or, là, avec COM, je ne sais pas comment faire. A un moment, j'ai même eu un message d'erreur à la compilation disant qu'un stream n'est pas autorisé en paramètre à une méthode COM. Et ceci est la raison de mon post initial.

  6. #6
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 473
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 473
    Points : 24 930
    Points
    24 930
    Par défaut
    Citation Envoyé par KlausGunther Voir le message

    Citation Envoyé par ShaiLeTroll Voir le message
    Sinon, pour éviter que l'on cherche, c'est quoi le nom de la classe retournée par Items() ?
    MailItem ?
    Je ne sais pas. Contrairement aux objets Delphi normaux, un élément OLE placé dans une variable variant peut recevoir des complément sous forme de méthode du style variable.méthode, mais Delphi n'affiche pas les choix possibles lorsqu'un saisit le ".". Ainsi, j'ai trouvé ma méthode ".SaveAs" sur internet, mais aucune liste complète des méthodes et propriétés applicables. De plus, je ne crois pas que la notion de "ClassName" ait vraiment un sens ici - ce ne sont pas des classes, mais des objets DOM de Outlook, d'après ce que j'ai compris.
    "Je ne sais pas"
    En Late Binding OLE, il faut connaître les classes retournées pas via le code mais en tant que développeur pour savoir naviguer dedans et dans la doc !
    Et justement MailItem est l'élément de Items() et ça te donnera les propriétés !
    Faut surtout pas développez ça à l'aveugle, avant se coder, va falloir savoir naviguer dans la Doc.
    Ou alors fait passer en Early Binding en important directement la bibliothèque de type de Outlook



    Sinon, n'oubliez pas la dernière ligne de ma réponse, la seule non commentée, c'est surement la réponse ...

    Citation Envoyé par ShaiLeTroll Voir le message
    Voir Body et BodyFormat olFormatHTML, HTMLBody ...
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  7. #7
    Membre habitué

    Homme Profil pro
    Informaticien retraité
    Inscrit en
    Mars 2010
    Messages
    287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Informaticien retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2010
    Messages : 287
    Points : 164
    Points
    164
    Billets dans le blog
    1
    Par défaut
    @ShaiLeTroll:
    J'ai bien commenté ton message ! J'ai bien vu MailItem sur MSDN, mais je n'ai rien vu concernant les streams. Ce continue à creuser.
    Voici une copie de mon commentaire sur ton premier message:
    Pourquoi Outlook ?
    Je dirais plutôt: pourquoi pas Outlook ? Il se trouve que j'ai Outlook et que j'aimerais pour le "tripatouiller", en fait le cacher et l'accéder via un frontal de mon cru. C'est mon souhait, et je ne vois pas pourquoi ce ne serait pas possible.

    Je ne pose même pas la question pourquoi D6 et non le dernier Communauty
    Depuis 10 ans, je développe une DLL de soutien à un langage dont je suis fan. Il s'agit d'un clône de Basic, conçu et développé par une seule personne dans son temps libre, avec une communauté d'utilisateurs qui est petite mais active et motivée. Ce langage étant créé lui-même en Delphi 6, il a paru judicieux au départ d'utiliser le même langage pour ma bibliothèque de soutien, une seule et grande DLL avec plus de 1100 fonctions exportées actuellement. La migration vers Delphi 7 et vers Lazarus a été un échec - trop d'incompatibiliées dans de petits détails du code, rendant nécessaire la réécriture d'une large du cide.

    Pour ces raisons, je suis resté avec mon Delphi 6 Personal Edition, bien qu'il y ai de multiples restrictions.

    Je ne connaissais pas la Community Edition. Je l'ai téléchargé, je vais l'installer et tester. Mais je redoute le même genre de problèmes qu'avec Lazarus, excellent produit par ailleurs...

    Prendre à la source en IMAP4 (via Indy9) voir même en GRAPH (Indy9 aussi faut juste faire un petit wrapper REST, quoi que la partie OAuth2 avec les headers surement un peu pénible) n'aurait-il pas été plus pérenne pour un bot d'aspiration de mail ?
    Peut-être... D'abord,, je n'ai jamais réussi à intégrer Indy dans mon Delphi 6 PE. Je n'ai pas vraiment compris pourquoi ça n'a pas marché, mais j'ai toujours trouvé des alterntives sans Indy pour parvenir à mes fins. Jusqu'à maintenant, ça n'a pas été bloquant.

    D'ailleurs, sur les différents forums, il y a pas mal de voix pour déconseilelr IMAP dans une optique d'autimatisation de Outlook. Ceci m'a refroidi par rapport à l'utiisation de IMAP.

    Sinon, pour éviter que l'on cherche, c'est quoi le nom de la classe retournée par Items() ?
    MailItem ?
    Je ne sais pas. Contrairement aux objets Delphi normaux, un élément OLE placé dans une variable variant peut recevoir des complément sous forme de méthode du style variable.méthode, mais Delphi n'affiche pas les choix possibles lorsqu'un saisit le ".". Ainsi, j'ai trouvé ma méthode ".SaveAs" sur internet, mais aucune liste complète des méthodes et propriétés applicables. De plus, je ne crois pas que la notion de "ClassName" ait vraiment un sens ici - ce ne sont pas des classes, mais des objets DOM de Outlook, d'après ce que j'ai compris.

  8. #8
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 473
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 473
    Points : 24 930
    Points
    24 930
    Par défaut
    Pourquoi vous recopiez une seconde fois la même chose ?
    Je voulais vous attirer l'oeil sur la propriété Body car j'ai eu l'impression que vous étiez passé à côté !
    C'est une string et donc rien de plus simple de passer d'un Variant vers une string puis vers un TStringStream

    Lisez les réponses complètement car là j'ai l'impression que j'explique des choses dans le vide, c'est très désagréable !
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  9. #9
    Membre habitué

    Homme Profil pro
    Informaticien retraité
    Inscrit en
    Mars 2010
    Messages
    287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Informaticien retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2010
    Messages : 287
    Points : 164
    Points
    164
    Billets dans le blog
    1
    Par défaut
    j'avais bien vu la propriété Body. Mais elle ne fait pas l'affaire: c'est une propriété TEXT, pas en format HTML. Et donc, lors de l'affichage, je perds tout le formattage html.

    Actuellement, je fais comme ceci:
    Lors du clic dans un objet ListBox dans lequel j'ai tous les sujets des mails ainsi que les objets MaiItem associés:
    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
    procedure TOLPanel.MyListOnClick(Sender: TObject);
    var
      OleMail: TMailIndex;
      ind: integer;
    const
        olTXT = $00000000;
        olRTF = $00000001;
        olTemplate = $00000002;
        olMSG = $00000003;
        olDoc = $00000004;
        olHTML = $00000005;
        olVCard = $00000006;
       olVCal = $00000007;
    begin
      ind := ListBox.ItemIndex;
      OleMail := TMailIndex(ListBox.Items.Objects[ind]);
      ind := OleMail.MailIndex;
    //  showmessage(vDossier.Items(ind).Body);             // <===================== on voir que c'est du texte pur, pas HTML !
      vDossier.Items(ind).SaveAs('c:\temp\tempmsg.msg', olHTML); // olMSG);    // <========== c'est ici que j'aurais aimé éviter le fichier en passant par un stream !
      WebBrowser.Navigate('File://c:\temp\tempmsg.msg');
    end;

  10. #10
    Membre chevronné
    Avatar de free07
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 931
    Points : 1 915
    Points
    1 915
    Par défaut
    Bonjour,

    Il me semble qu'il y a TOutlookApplication de l'unité Outlook200 ( OLE ) qui permet d'importer le contenu d'un email

  11. #11
    Membre habitué

    Homme Profil pro
    Informaticien retraité
    Inscrit en
    Mars 2010
    Messages
    287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Informaticien retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2010
    Messages : 287
    Points : 164
    Points
    164
    Billets dans le blog
    1
    Par défaut
    @Free07:
    Je n'ai pas Outlook200.pas sur mon sysème, sur mon système, ni un composant Outlook200.
    J'ai cherché sur Internet je je ne trouve ni Outlook200.pas si un composant Outlook200.
    Peux-tu me donner un lien stp ?

  12. #12
    Membre chevronné
    Avatar de free07
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 931
    Points : 1 915
    Points
    1 915
    Par défaut
    Dans Delphi, menu Composant et 'Installer des packages' est ce que tu as la package d'exécution 'composants Microsoft Office 2000... ' de coché ?

    EDIT : tu trouveras peut être de l'aide dans la FAQ : https://delphi.developpez.com/faq/?p...crosoft-Office

  13. #13
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 473
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 473
    Points : 24 930
    Points
    24 930
    Par défaut
    Citation Envoyé par KlausGunther Voir le message
    j'avais bien vu la propriété Body. Mais elle ne fait pas l'affaire: c'est une propriété TEXT, pas en format HTML. Et donc, lors de l'affichage, je perds tout le formattage html.
    Et as-tu essayé HTMLBody comme je l'ai aussi proposé ?
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  14. #14
    Membre habitué

    Homme Profil pro
    Informaticien retraité
    Inscrit en
    Mars 2010
    Messages
    287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Informaticien retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2010
    Messages : 287
    Points : 164
    Points
    164
    Billets dans le blog
    1
    Par défaut
    Je suis confus... je n'avais pas du tout compris. En effet, ça fait exactement ce que je voulais.
    Un grand MERCI, avec toutes les excuses !

    Voicile code opérationnel après l'aide de ShaiLeTroll (HTLMBody):
    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
    procedure TOLPanel.MyListOnClick(Sender: TObject);
    var
      OleMail: TMailIndex;
      ind: integer;
      Doc: Variant;
    const
        olTXT = $00000000;
        olRTF = $00000001;
        olTemplate = $00000002;
        olMSG = $00000003;
        olDoc = $00000004;
        olHTML = $00000005;
        olVCard = $00000006;
       olVCal = $00000007;
    begin
      ind := ListBox.ItemIndex;
      OleMail := TMailIndex(ListBox.Items.Objects[ind]);
      ind := OleMail.MailIndex;
      {
        Les deux lignes suivantes fonctionnent, mais utilisent en fichier de temporaire
          vDossier.Items(ind).SaveAs('c:\temp\tempmsg.msg', olHTML); // olMSG);
          WebBrowser.Navigate('File://c:\temp\tempmsg.msg');
      }
      if NOT Assigned(WebBrowser.Document) then WebBrowser.Navigate('about:blank');
      Doc := WebBrowser.Document;
      Doc.Clear;
      Doc.Write(vDossier.Items(ind).HTMLBody);
      Doc.Close;
    end;

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 25/02/2015, 12h39
  2. [Débutant] Parser un code html de la vue dans mon controller
    Par Overcrash dans le forum ASP.NET MVC
    Réponses: 3
    Dernier message: 19/02/2015, 15h34
  3. Code HTML produit avec PHP dans Eclipse
    Par JCD21 dans le forum Langage
    Réponses: 2
    Dernier message: 28/01/2011, 17h28
  4. Récupérer le code HTML de la sélection dans une iFrame
    Par umeboshi dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 26/11/2009, 10h04
  5. Réponses: 9
    Dernier message: 23/10/2007, 11h12

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