(Courriels de diversion: <ecloraient@repugner-bolides.com> <partagerons@sensibilisant-rauques.com> <extrairez@enracines-situent.com> <gravirais@atomiques-expieras.com> <philosopherons@detecterent-polemiquerais.com> <scandalisa@retranscrirai-manchettes.com> <sautillements@trajets-machinal.com> <ballaster@delimitee-reinstallera.com> <intimidante@conquerions-refermerai.com> <carpe@remorquera-supprimee.com> )


Salut, j'ai un soucis avec hylafax, enfin c'est surtout avec le fichier
notify.awk. J'ai fait les modification données dans ce message :
http://www.culte.org/listes/linux-31/2004-01/msg00417.html, l'envoie de
mail avec pièces jointes marche bien. Ce qui me pose problème c'est le
codage de caractère du champs subject et aussi le corps du message. Ca
ressemble à ca :
-------------------------------------------------------
Votre fax vers 0478260203 a été envoyé correctement.

         Pages: 1
      Qualité: Normale
Largeur de page: 194 (mm)
Hauteur de page: 281 (mm)
       Vitesse: 14400 bit/s
Format de données: 2-D MR
         Calls: 2 (total appels tentés)
 Soumis depuis: 192.168.5.240
Numéro de JOB: 70
 Groupe de JOB: 70
        CommID: c000000091
          File: docq/doc70.ps

Temps total de traitement 1:01.
--------------------------------------------------------
J'ai essayé en passant le codage à 8 bits mais rien à faire. 
Chose encore plus bizarre, j'utilise mon propre postfix pour permettre à
hylafax d'envoyer les mails. Lorsque j'envoie sur une boite local et que
je relève le mail en console, pas de soucis, j'ai bien les caractères,
mais si j'envoie le mail sur une boite externe (ovh ou free) je n'ai
plus les caractères. J'ai essayé aussi sur un autre pc, mais même
résultat.

J'ai modifié un peu le fichier donné dans le message précendent :
---------------------------------------------------------
#! /bin/sh
function printItem(fmt, tag, value)
{
    printf "%14s: " fmt "\n", tag, value;
}

function printBanner(banner)
{
    print "";
    print "    ---- " banner " ----";
    print "";
}

function docType(s)
{
    if (match(s, "\.cover"))
    return "PostScript cover page";
    else if (match(s, "\.ps"))
    return "PostScript";
    else if (match(s, "\.tif"))
    return "TIFF";
    else if (match(s, "\.pdf"))
    return "PDF";
    else if (match(s, "\.pcl"))
    return "PCL";
    else
    return "Unknown document type";
}

#
# Construct a return-to-sender message.
#
function returnToSender()
{
    printBanner("Unsent job status");
    printItem("%s", "Destination", number);
    printItem("%s", "JobID", jobid);
    printItem("%s", "GroupID", groupid);
    printItem("%s", "Emetteur", sender);
    printItem("%s", "Adresse mail", mailaddr);
    if (commid != "")
    printItem("%s", "CommID", commid);
    if (modem != "any")
    printItem("%s", "Modem", modem);
    printItem("%s", "Soumis depuis", client);
    if (jobType == "facsimile") {
    printItem("%u (mm)", "Largeur de page", pagewidth);
    printItem("%.0f (mm)", "Hauteur de page", pagelength);
    printItem("%.0f (lpi)", "Résolution", resolution);
    }
    printItem("%s", "Status", status == "" ? "  (nothing available)" :
status);
    printItem("%u (échanges avec l\'équipement distant)", "Dialogues",
tottries);
    printItem("%u (numérotations consécutives vers la destination)",
"Numérotations", ndials);
    printItem("%u (total appels tentés)", "Appels", totdials);
    if (jobType == "facsimile") {
    printItem("%u (pages transmises)", "Pages", npages);
    printItem("%u (Total pages à transmettre)", "Total Pages",
totpages);
    printItem("%u (Tentatives envoie page courante)", "Tentatives",
ntries);
#    printItem("%u (directory of next page to send)", "Dirnum", dirnum);
    if (nfiles > 0) {
        printBanner("Documents soumis à transmission");
        print "Les documents suivants ont été soumis à la transmission
et sont";
        print "disponibles sur le serveur jusqu\'à ce qu\'ils soient
automatiquement";
        print "supprimés lorsque ce fax est purgé (" doneop "d).";
        print ""
        printf "%-20s %8s %s\n", "Fichier", "Taille", "Type";
        for (i = 0; i < nfiles; i++) {
        "wc -c " files[i] | getline;
        printf "%-20s %8d %s\n", files[i], $1, docType(files[i]);
        close("wc -c " files[i]);
         }
    }
    } else if (jobType == "pager") {
    if (npins != 0) {
        printBanner("Pages en échec de transmission");
        for (i = 0; i < npins; i++)
        printf "%15s\n",  "PIN " pins[i];
    }
    if (nfiles != 0) {
        printBanner("Message text");
        while ((getline <files[0]) > 0)
        print $0;
        close(files[0]);
    }    
    }
}

function returnTranscript()
{
    printBanner("Rapport de session ci-dessous");
    comFile = "log/c" commid;
    if ((getline <comFile) > 0) {
    do {
        if (index($0, "-- data") == 0)
        print $0
    } while ((getline <comFile) > 0);
    close(comFile);
    } else {
    printf "    Aucun rapport disponible";
    if (commid != "")
        printf "(CommID c" commid ")";
    print ".";
    }
}

function printStatus(s)
{
    if (s == "")
    print "<no reason recorded>";
    else
    print s
}

function putHeaders(subject)
{
#    print "To: " mailaddr;
#    print "Subject: " subject;
#    print "";
#    printf "Your " jobType " job to " number;

    print "MIME-Version: 1.0";
    print "Content-Type: multipart/mixed;";
    print "    boundary=\"----=_NextPart_000_0012_01BF3CD4.528144C0\"";
    print "To: " mailaddr;
    print "Subject: " subject;
    print "From: \"Fax Manager\" <fax@toto.fr>";    print "";
    print "This is a multi-part message in MIME format";
    print "";
    print "------=_NextPart_000_0012_01BF3CD4.528144C0";
    print "Content-Type: text/plain;";
    print "    charset=\"iso-8859-1\"";
    print "Content-Transfert-Encoding: 8bit";
    print "";
    printf "Votre fax vers " number;
}

BEGIN        { nfiles = 0;
          npins = 0;
          pagewidth = 0;
          pagelength = 0;
          resolution = 0;
          jobType = "facsimile";
          signalrate = "unknown";
          dataformat = "unknown";
          doneop = "default";
                pagernum = "unknown";
          commid = "";
        }
/^jobid/    { jobid = $2; }
/^groupid/    { groupid = $2; }
/^state/    { state = $2+0; }
/^doneop/    { doneop = $2; }
/^number/    { number = $2; }
/^external/    { number = $2; }        # override unprocessed number
/^sender/    { sender = $2; }
/^mailaddr/    { mailaddr = $2; }
/^jobtag/    { jobtag = $0; sub("jobtag:", "", jobtag); }
/^jobtype/    { jobType = $2; }
/^status/    { status = $0; sub("status:", "", status);
          if (status ~ /\\$/) {
              sub("\\\\$", "\n", status);
              while (getline > 0) {
              status = status $0;
              sub("\\\\$", "\n", status);
              if ($0 !~ /\\$/)
                  break;
              }
          }
        }
/^resolution/    { resolution = $2; }
/^npages/    { npages = $2; }
/^totpages/    { totpages = $2; }
/^dirnum/    { dirnum = $2; }
/^commid/    { commid = $2; }
/^ntries/    { ntries = $2; }
/^ndials/    { ndials = $2; }
/^pagewidth/    { pagewidth = $2; }
/^pagelength/    { pagelength = $2; }
/^signalrate/    { signalrate = $2; }
/^dataformat/    { dataformat = $2; }
/^modem/    { modem = $2; }
/^totdials/    { totdials = $2; }
/^tottries/    { tottries = $2; }
/^client/    { client = $2; }
/^[!]*post/    { files[nfiles++] = $4; }
/^[!]*tiff/    { files[nfiles++] = $4; }
/^[!]*pcl/    { files[nfiles++] = $4; }
/^page:/    { pins[npins++] = $4; }
/^[!]page:/   { pagernum = $4; }
/^data:/    { files[nfiles++] = $4; }
/^poll/        { poll = " -p"; }
END {
    if (jobtag == "")
    jobtag = jobType " job " jobid;;
    if (doneop == "default")
    doneop = "remove";
    if (jobType == "pager")
      number = pagernum;
    if (why == "done") {
    putHeaders("Fax " jobtag " vers " number " envoyé");
    print " a été envoyé correctement.";
    print "";
    if (jobType == "facsimile") {
        printItem("%u", "Pages", npages);
        if (resolution == 196)
        printItem("%s", "Qualité", "Fine");
        else
        printItem("%s", "Qualité", "Normal");
        printItem("%u (mm)", "Largeur de page", pagewidth);
        printItem("%.0f (mm)", "Hauteur de page", pagelength);
        printItem("%s", "Vitesse", signalrate);
        printItem("%s", "Format de données", dataformat);
    }
    if (tottries != 1)
        printItem("%s (échanges avec l\'équipement distant)",
"Dialogues", tottries);
    if (totdials != 1)
        printItem("%s (total appels tentés)", "Appels", totdials);
    if (modem != "any")
        printItem("%s", "Modem", modem);
    printItem("%s", "Soumis depuis", client);
    printItem("%s", "JobID", jobid);
    printItem("%s", "GroupID", groupid);
    printItem("%s", "CommID", "c" commid);
    printf "\nTemps total de traitement " jobTime ".\n";
    if (status != "") {
        print "  Informations complémentaires:\n    " status;
        returnTranscript();
    }
    
    print "------=_NextPart_000_0012_01BF3CD4.528144C0";
    print "Content-Type: application/pdf;";
    print " name=\"" jobtag ".pdf\"";
    print "Content-Transfert-Encoding: base64";
    print "Content-Disposition: inline;";
    print " filename=\"" jobtag ".pdf\"";
    print "";
    system("/usr/bin/ps2pdf /var/spool/hylafax/" files [0] "
/var/spool/hylafax/pdfs/fax.pdf 1>/dev/null 2>/dev/null");
    system("/usr/bin/mimencode /var/spool/hylafax/pdfs/fax.pdf");
    system("/usr/bin/rm /var/spool/hylafax/pdfs/fax.pdf");
    print "------=_NextPart_000_0012_01BF3CD4.528144C0--";

    } else if (why == "failed") {
    putHeaders("Fax " jobtag " vers " number " échoué");
    printf " a échoué. Raison de l\'échec :\n    ";
    printStatus(status);
#    returnTranscript();
    returnToSender();
    } else if (why == "rejected") {
    putHeaders("Fax " jobtag " vers " number " rejeté");
    printf " a été rejeté pour la raison suivante :\n    ";
    printStatus(status);
    returnToSender();
    } else if (why == "blocked") {
    putHeaders("Fax " jobtag " vers " number " bloqué");
    printf " est différé à l\'envoi pour la raison suivante :\n    ";
    printStatus(status);
    print "";
    print "Ce fax va être traîté dès que possible."
    } else if (why == "requeued") {
    putHeaders("Fax " jobtag " vers " number " remis en file
d\'attente");
    printf " n\'a pas été envoyé pour la raison suivante :\n    ";
    printStatus(status);
    print "";
    print "Nouvelle tentative à : " nextTry "."
    returnTranscript();
    } else if (why == "removed" || why == "killed") {
    putHeaders("Fax " jobtag " vers " number " retiré de la file
d\'attente");
    print " a été retiré de la file d\'attente.";
    if (why == "killed")
        returnToSender();
    } else if (why == "timedout") {
    putHeaders("Fax " jobtag " vers " number " échoué");
    print " n\'a pas pu être envoyé avant l\'échéance prévue.
(timeout)";
    returnToSender();
    } else if (why == "format_failed") {
    putHeaders("Fax " jobtag " vers " number " échoué");
    print " n\'a pas été envoyé car la conversion du document"
    print "en fax a échoué. Le diagnostic du convertisseur est :\n";
    print status "\n";
    printf "Vérifiez la validité de vos documents PostScript (police non
standard) %s.\n",
        "et/ou syntaxe incorrecte";
    returnToSender();
    } else if (why == "no_formatter") {
    putHeaders("Fax " jobtag " vers " number " échoué");
    print " n\'a pas pu être envoyé car";
    print "le script de conversion n\'a pas été trouvé.";
    returnToSender();
    } else if (match(why, "poll_*")) {
    putHeaders("Notice about " jobtag);
    printf ", a polling request,\ncould not be completed because ";
    if (why == "poll_rejected")
        print "the remote side rejected your request.";
    else if (why == "poll_no_document")
        print "no document was available for retrieval.";
    else if (why == "poll_failed")
        print "an unspecified problem occurred.";
    print "";
    printf "Processing time was %s.\n", jobTime;
    returnTranscript();
    } else {
    putHeaders("Notice about " jobtag);
    print " had something happen to it."
    print "Unfortunately, the notification script was invoked",
        "with an unknown reason"
    print "so the rest of this message is for debugging:\n";
    print "why: " why;
    print "jobTime: " jobTime;
    print "nextTry: " nextTry;
    print  "";
    print "This should not happen, please report it to your
administrator.";
    returnTranscript();
    returnToSender();
    }
}
---------------------------------------------------------


--------------------------------------------------------------------
Les listes de diffusion occultes: <URL:http://www.CULTe.org/listes/>