Annexe A, Conseils de programmation

4D - Documentation   Français   English   German   Japanese   Commandes Internet de 4D, Sommaire   Commandes Internet de 4D, Index   Retour   Précédent   Suivant

version 6.5


Exécution des commandes dans des boucles 'Au cas ou'

Dans de nombreux exemples de ce manuel, on utilise une structure de programmation particulière. Ces exemples exécutent des séries de commandes en utilisant l'instruction Au cas ou de manière peu orthodoxe.

En fait, de nombreuses fonctionnalités des commandes Internet de 4D Internet requièrent l'exécution complète d'une séquence de commandes. L'échec d'une seule commande de la séquence étant suffisant pour interrompre la poursuite du processus, l'utilisation de Si imbriqués sur de nombreux niveaux serait fastidieux :

   Si (SMTP_New($smtp_id)=0)
      Si (SMTP_Host ($smtp_id;<>pref_Serveur)=0)
         Si (SMTP_From ($smtp_id;vDe)=0)
            Si (SMTP_To ($smtp_id;vA)=0)
               …etc, etc…
            Fin de si
         Fin de si
      Fin de si
   Fin de si

La solution employée dans ce manuel consiste à s'appuyer sur la manière dont 4D exécute les instructions Au cas ou. Chaque condition d'une instruction Au cas ou est exécutée par 4D pour déterminer si la valeur renvoyée est Vraie ou Fausse. Lorsque chaque condition d'une instruction Au cas ou renvoie une valeur fausse, toutes les conditions sont donc exécutées. Les lignes suivantes remplacent le code décrit plus haut :

   $EnvoyeOK:=Faux  `Ce "drapeau" indique si tous les appels ont été transmis
   Au cas ou 
      : (SMTP_New ($smtp_id)#0)
      : (SMTP_Host ($smtp_id;<>pref_Serveer)#0)
      : (SMTP_From ($smtp_id;vDe)#0)
      : (SMTP_To ($smtp_id;vA)#0)
      : (SMTP_Subject ($smtp_id;vSujet)#0)
      : (SMTP_Body ($smtp_id;vMessage)#0)
        : (SMTP_Send ($smtp_id)#0)
   Sinon 
      $EnvoyeOK:=Vrai   `Le message a été composé et envoyé
   Fin de cas 
   Si ($smtp_id#0)   `Si un message a été créé en mémoire, nous devons l'effacer maintenant
      $OK:=SMTP_Clear ($smtp_id)
   Fin de si 

Dans cet exemple, chaque commande renvoie l'erreur 0 (zéro) si son exécution s'est déroulée correctement. Pour pouvoir évaluer chaque condition, 4D doit en fait exécuter chaque ligne. Comme chaque condition compare le résultat à "différent de zéro", la valeur renvoyée est toujours Fausse et 4D ne trouve pas de condition à laquelle s'arrêter jusqu'à ce que l'une des commandes échoue. Si chaque commande est exécutée correctement, 4D poursuit l'exécution de la méthode jusqu'à la condition Sinon dans laquelle le drapeau $EnvoyeOK prend la valeur Vraie afin d'indiquer que le message a été composé et envoyé sans incident.

Recommandations pour une réponse automatique à un courrier POP3 ou IMAP

Si vous envisagez de mettre en place, à l'intérieur de votre base de données, un système de messagerie permettant notamment aux utilisateurs de "répondre" aux courriers qu'ils ont reçu, voici quelques recommandations tirées de la RFC 822 :

L'adresse électronique de l'"Expéditeur" (Sender) ne doit recevoir que des réponses relatives à des problèmes de distribution de courrier et non des réponses se rapportant au sujet traité dans le message. En l'absence d'en-tête "Expéditeur" (Sender), les problèmes doivent être envoyés à l'adresse figurant dans l'en-tête "Emetteur(s)" (From).

L'adresse de l'"Expéditeur" (Sender) ne doit jamais être utilisée avec des automates. L'automate devra plutôt utiliser l'en-tête "Réponse à" (Reply-To) ou "Emetteur(s)" (From) pour répondre à un message, le choix de l'en-tête le plus approprié dépendant des facteurs indiqués ci-dessous.

Si l'en-tête "Réponse à" (Reply-To) existe et contient une ou plusieurs adresses, les réponses doivent alors être adressées aux personnes de cette liste. Les adresses de l'en-tête "Réponse à" (Reply-To) ont priorité sur celles figurant dans l'en-tête "Emetteur(s)" (From). En l'absence d'en-tête "Réponse à" mais en présence d'un en-tête "Emetteur(s)", les réponses doivent être envoyées aux adresses indiquées dans ce dernier.

Ces recommandations ont pour seul but de faciliter la prise de décision lorsque l'adressage du courrier est géré par programmation dans le cas d'actions de type "Réponse". Une fois le message de réponse créé, l'utilisateur final peut parfaitement annuler ces paramétrages par défaut avant d'envoyer le message.


4D - Documentation   Français   English   German   Japanese   Commandes Internet de 4D, Sommaire   Commandes Internet de 4D, Index   Retour   Précédent   Suivant