Modules d'exemple 



News.hsm

Ce module permet de modifier l'entête des articles de courrier sortants.
Il commence par charger dans une liste le contenu de tous les articles en instance d'envoi.
Il convertit ensuite, article par article, le sujet de 8bits en 7bits pour une question de compatibilité avec certains logiciels de lecture qui ne savent pas gérer les caractères accentués dans cette partie. Par contre, les lecteurs savent bien gérer les accents dans le corps des articles.
Enfin, il modifie dans le "MessageID:" l'adresse de l'expéditeur qui se termine souvent par @localhost avec une terminaison de son choix ( ex : @Olivier.jp3)
Pratiquement toutes les lignes de ce module sont commentées, ce qui facilite la compréhension mais pas la lecture.
Une version non commentée est disponible ici



#####################################################################
# Module : News.hsm
# Description : Version amputée et modifiée de BMessage.hsm
#               Fonctions de traitement des articles sortants
# Auteur BMessage.hsm : Brina <HamsterFR@Free.fr>
# Auteur News.hsm : Olivier Zolli <ozolli@online.fr>
# Version : 27/01/01
#####################################################################

# Chargement des modules nécessaires.
# Ces modules sont livrés avec la version française de Hamster.
# Attention : La ligne qui suit n'est pas un commentaire ! 
#!load BStrings.hsm
#!load BMsgHeader.hsm
#!load BFichierTexte.hsm

# Procédure d'initialisation du module 
# Attention : La ligne qui suit n'est pas un commentaire ! 
#!initialize
  debug(255,"<<< module News.hsm' >>>")
return(0)

#####################################################################
# Subroutine modifiant les entêtes de tous les articles sortants
# [Entrée] : Aucune
# [Sortie] : Aucune
#####################################################################

# Début de la fonction 
Sub EnteteNews

# Déclaration des variables 
Var($i,$msg,$ContenuMsg,$nb_msg,$subject,$FichierMsg_i,$mid)

# la liste $msg contient le nom des fichiers de courrier contenus 
# dans le répertoire Groups\News.out\
$nb_msg=ListeFichiers_DsRep($msg,HamPath+"Groups\News.Out\","msg")-1

# Initialisation de la liste $ContenuMsg
# liste non ordonnée, doublons possibles
$ContenuMsg=ListAlloc

# Boucle non-conditionnelle For ... EndFor
For($i,0,$nb_msg,1)

  # Récupération du nom d'un fichier de message "$i.msg"
  $FichierMsg_i=ListGet($msg,$i)
  print($fichierMsg_i)

  # Mise du contenu du fichier "$FichierMsg_i" dans liste $ContenuMsg
  # $ContenuMsg est préalablement vidée
  ListClear($ContenuMsg)
  ListLoad($ContenuMsg,$FichierMsg_i)

  # Conversion des caractères 8bits en 7bits dans sujet des articles
  # que l'on envoie
  $Subject=ChaineConvert8_7bit(MsgGetHeader($ContenuMsg,"Subject:"))
  MsgChangeHeader($ContenuMsg,"Subject:",$Subject)

  # Modification du Message-ID : Remplacement de la partie qui
  # commence par @ avec @Olivier.jp3
  $mid=MsgGetHeader($ContenuMsg,"Message-ID:")
  $mid=replace($mid,copy($mid,pos("@",$mid)),"@Olivier.jp3>")
  MsgChangeHeader($ContenuMsg,"Message-ID:",$mid)

  # Retourne contenu de la liste $ContenuMsg dans le fichier "$i.msg"
  ListSave($ContenuMsg,$FichierMsg_i)

# Fin de la boucle non-conditionnelle
EndFor

# Libération de la liste en mémoire
ListFree($ContenuMsg)

# Fin de la fonction 
endsub




 Sommaire 


© 2000-2001 Brina & Olivier Zolli

Dernière mise à jour le 22/02/2001