h2o

AppleScript & FileMaker

 

Mail utilisant le protocol "mailto"

 


Page modifiée le
26 octobre 2001

 

Adressez-moi vos commentaires, appréciations et desiderata.

 

Recevoir des infos sur les nouveautés du site

Mailto Compatible FMPro 4  Compatible Windows  Compatible MacOS  Module 

Ce document illustre et explique comment utiliser la commande “Ouvrir URL” pour envoyer des mails depuis FileMaker via l’application courrier défini dans les préférences du système (Netscape Communicator, Outlook Express, Eudora, ...).

Email utilisant la fonction 'ouvrir url'

Téléchargement 44Ko

Le principe : ouvrir une adresse URL via un script "FileMaker Pro"

Les adresses URL sont les adresses internet du style :

"http://www.h2o.be".

ou

"ftp://jmh@h2o.be"

Mais également :

"mailto:jmh@h2o.be"

La syntaxe complète de la commande mail est :

"mailto:adresse to?cc=adresse cc&bcc=adresse bcc&subject=Objet&body=Corps"

La base comporte donc au minimum, 6 rubriques et un script

5 rubriques textes correspondant au 5 éléments de la commande "mailto". 1 rubrique qui calcule la mise en forme de la commande. 1 script qui se charge de transférer le contenu du mail à l'application courrier par défaut telle que sélectionnée dans les préférences du système d'exploitation (Outlook Express, Netscape Communicator, Eudora ... ).

Rubriques :

1. "Adresse to" (texte) 2. "Adresse CC" (texte) 3. "Adresse BCC" (texte) 4. "Sujet" (texte) 5. "Corps" (texte) 6. "Mailto" (calcul résultat texte)

Script : Ouvrir URL [sans dialogue,"Mailto"]

Regardons de plus prêt la rubrique calcul "Mailto".

Pour commencer, voici la formule de base :

TEST(
ESTVIDE(Adresse to & Adresse cc & Adresse bcc & Objet & Corps); "";
"mailto:" & "?cc=" & Adresse cc &bcc=" & Adresse bcc & "&subject=" & Objet & "&body=" & Corps)
)

D'abord, nous testons si au moins une des rubriques comporte des données, ensuite, mettons en place les données pour récréer la syntaxe de la commande mail.

Et cela fonctionne;

Sauf que, nous nous s'aperçevons que le corps du texte n'est pas correctement formaté : les retours à la ligne ont disparus !

Il faut donc remplacer ce caractère (représenté par "¶" dans les formules de calcul de FileMaker) par quelque chose que les applications courrier interprètent correctement.

Et pour éviter des conflits dans la formule, il est important de remplacer également les caractères réservés "?", "=" et "&".

De plus, dans les mails, le caractère <tabulation> n'est pas utilisé. Il est remplacé par un certain nombre d'espace, généralement 5.
Et pour être parfaitement compatible, il faut également remplacer le caractère <espace>.

Nous allons donc insérer un bout de formule, une fonction, qui remplace les caractères à problèmes par un code compréhensible pour les applications courrier :

<retour> ou "¶" devient "%0D" (+ "%0A" sur un PC équipé Windows)
"&" devient "%26"
"=" devient "%3D"
"?" devient "%3F"
<espace> devient "%20"
<tabulation> devient "%20%20%20%20%20" (= 5 espaces)

Et pour faire bonne mesure, remplaçons également ces caractères dans l'objet du message.
Sauf que là, la tabulation sera remplacée par un seul espace. Et qu'il est prudent de remplacer le <retour> par un espace.

Voilà, tout fonctionne bien mieux.

Autre problème :

Si vous envoyez le même message à plusieurs correspondants en copie carbone invisible (Blind carbon copy - Bcc), rien ne va.
En effet, j'ai présenté les 3 listes de correspondants de façon à ce que chaque adresse occupe une ligne. C'est bien plus lisible.

Les adresses sont donc séparées par un retour à la ligne.
Ceci ne fonctionne pas sur les applications courrier. Là, les adresses sont séparées par une virgule.

Nous allons donc remplacer les <retours> par une virgule.

REMPLACE2 (texte; chaîne recherchée; chaîne de remplacement)

soit :

REMPLACE2 (texte; "¶"; ",")

Voilà, la formule est prête à fonctionner.

Nettoyons encore un peu cela.

Inutile de conserver les paramètres vides : s'il n'y a pas de destinataire en copie carbone invisible, ne conservons pas cette partie de la commande.

Un petit :

TEST(ESTVIDE(rubrique),"","&bcc=" & rubrique)

fait parfaitement l'affaire.

Il reste une dernière petite chose.

Le premier paramètre est séparé de la commande "mailto" par un "?". Les paramètres suivants sont liés à l'ensemble par un "&".
Comme nous ne gardons que les paramètres utilisés, la mise en place des "?" et les "&" peut poser quelques problèmes.
J'avais imaginé une batterie complexe de TEST(). Clément Hoffmann propose un solution plus courte.

Chaque paramètre est introduit par "&".
Le premier caractère de la chaîne de paramètre sera donc "&", quelques soient les paramètres utilisés.
Nous allons donc remplacer ce caractère par un "?" :

REMPLACE (chaîne1; début; longueur; chaîne)

soit :

REMPLACE (<chaîne de paramètres>; 1; 1; "?")

Et voilà la formule complète que je vous invite à découvrir dans la description des rubriques.

PS :

Il reste encore un petit élément ajouté dans la formule :
la possibilité de choisir le nombre de caractères qui remplacent une tabulation.

Et évidemment tout une série de petites choses qui rendent un base utilisable. Mais là, c'est une autre histoire.

Bon amusement.

Remerciement :

Merci à Clément Hoffmann pour sa présence constructive sur la liste de discussion d'Interfaces

http://fmpro.interfaces.fr/.

Sans lui, la formule ne serait qu'un beau foutoir.


Sauf indication contraire, tout les éléments publiés sur ce site sont
© J-M Hoornaert - h2o et libres sous licence GNU/GPL limitée.


visiteurs sur cette page depuis le 21 septembre 2001