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

Web & réseau Delphi Discussion :

[Indy] Récupérer valeur clé "Diagnostic-Code"


Sujet :

Web & réseau Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Profil pro
    Développeur informatique
    Inscrit en
    Juin 2002
    Messages
    264
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2002
    Messages : 264
    Par défaut [Indy] Récupérer valeur clé "Diagnostic-Code"
    Bonjour,

    J'utilise Indy10 pour récuperer mes messages avec le protocole Pop3.
    Je ne sais pas comment récuperer la valeur de la clé "Diagnostic-Code" contenue dans 1 partie d'un message sous la forme
    "Diagnostic-Code: blablabla"

    Je sais récuperer le "Content-Description" ou "Content-Type" grace au code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ThisPartCD:=TIdText(IdMessage.MessageParts.Items[NumPartie]).Headers.Values['Content-Description'];
    Mais ça ne marche que pour 3 valeurs, et "Diagnostic-Code" ne fait pas partie de ces valeurs "standards".
    J'ai aussi essayé avec ExtraHeader, mais la liste est vide.

    Je suppose qu'il faudrait rajouter ce "Diagnostic-Code" à la liste des entités, mais je n'y arrive pas.
    qq pourrait-il m'aider SVP ?
    Merci.

    Bib

  2. #2
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 236
    Par défaut
    Citation Envoyé par bib34690 Voir le message
    Bonjour,

    J'utilise Indy10 pour récuperer mes messages avec le protocole Pop3.
    Je ne sais pas comment récuperer la valeur de la clé "Diagnostic-Code" contenue dans 1 partie d'un message sous la forme
    "Diagnostic-Code: blablabla"

    Je sais récuperer le "Content-Description" ou "Content-Type" grace au code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ThisPartCD:=TIdText(IdMessage.MessageParts.Items[NumPartie]).Headers.Values['Content-Description'];
    Mais ça ne marche que pour 3 valeurs, et "Diagnostic-Code" ne fait pas partie de ces valeurs "standards".
    J'ai aussi essayé avec ExtraHeader, mais la liste est vide.

    Je suppose qu'il faudrait rajouter ce "Diagnostic-Code" à la liste des entités, mais je n'y arrive pas.
    qq pourrait-il m'aider SVP ?
    Merci.

    Bib
    Il se peut que tu ecrives mal la variable.

    Je te conseil de visulaliser ton Header de la manière suivante (comme çà tu pourras voir exactement les informations transmises) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Showmessage(TIdText(IdMessage.MessageParts.Items[NumPartie]).Headers.Text);
    Headers est un THearderList Qui n'est ni plus ni moins qu'une TStringList (avec des focntions en plus). Donc le value focntionne de la même manière. (Il faut une paire param/valeur)
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  3. #3
    Membre très actif
    Profil pro
    Développeur informatique
    Inscrit en
    Juin 2002
    Messages
    264
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2002
    Messages : 264
    Par défaut
    Oui, c'est effectivement mon problème.
    Cette entité est bien dans la partie 2 du message, mais elle n'est pas retournée par Header ni ExtraHeader.
    Voici le source de la partie 2 du message :
    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
     
    --33AF117B5C8.1202145361/smtp3-g19.free.fr
    Content-Description: Delivery report
    Content-Type: message/delivery-status
     
    Reporting-MTA: dns; smtp3-g19.free.fr
    X-Postfix-Queue-ID: 33AF117B5C8
    X-Postfix-Sender: rfc822; xxx@free.fr
    Arrival-Date: Mon,  4 Feb 2008 18:15:55 +0100 (CET)
     
    Final-Recipient: rfc822; xxx.fr
    Action: failed
    Status: 5.0.0
    Diagnostic-Code: X-Postfix; host smtp-test7.rsv.rss.fr[160.92.112.177] said:
        550 <xxxx.fr>: Recipient address rejected: User unknown (in
        reply to RCPT TO command)

  4. #4
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 236
    Par défaut
    Sinon tu peux faire comme ca :

    Code Delphi : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Var
      lst :TStringlist;
    begin
      lst : TStringList.create;
      try
        lst.text := TIdText(IdMessage.MessageParts.Items[NumPartie]).Headers.Text
        lst.Text := StringRepalce(lst.Text,':','=',[rfReplaceAll]);
        Showmessage(lst.Value['Diagnostic-Code']);
      finally
        lst.free;
      end;
    end;
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  5. #5
    Membre très actif
    Profil pro
    Développeur informatique
    Inscrit en
    Juin 2002
    Messages
    264
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2002
    Messages : 264
    Par défaut
    Le pb c'est que Item[NumPartie] ne contient pas mon "Diagnostic-Code" ni la suite de cette partie.
    Il contient seulement 3 items : Content-Type, Content-transfert et content-description, rien d'autre.
    Il faudrait que j'arrive à récuperer le reste de la partie ...

  6. #6
    Membre très actif
    Profil pro
    Développeur informatique
    Inscrit en
    Juin 2002
    Messages
    264
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2002
    Messages : 264
    Par défaut
    - Headers semble programmé pour ne retourner que les items qu'on lui a programmé au début (Indy prévoit certainement ces 3 par défaut). d'ailleurs Content-Type n'est pas présent dans cette partie et l'item est affiché qd même (avec une valeur vide).
    - ExtraHeader est toujours Vide.
    - Body ne marche que sur la partie 0 et plante sur les autres car les autres parties sont reconnues comme "IdAttachmentFile".

    ...donc impossible de récuperer le contenu intégral de cette partie.

    Je crois qu'il faudrait arriver à ajouter cette entité "Diagnostic-Code" à la liste prévue par Indy, pour qu'il la retourne dans Header ou ExtraHeader, mais comment ?

    J'ai essayé d'utiliser AddHeader ou assign sans succès...

    PS : j'ai oublié de préciser que ce message est un DSN (delivery Status Notification). La partie que j'essaye de lire est l'entête du mail que j'avais envoyé et qui est retournée dans ce mail...

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

Discussions similaires

  1. [Débutant] Récupérer valeur input dans le code behind
    Par warkan dans le forum ASP.NET
    Réponses: 1
    Dernier message: 19/04/2012, 12h24

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