version 6.8.1 (Modifiée)
SMTP_Charset (encoderEntêtes; jeuCorps) Entier
Paramètre | Type | Description | |
encoderEntêtes | Entier | -1 = Utiliser le paramétrage courant, 0 = Ne rien faire, | |
1 = Convertir dans le jeu de caractères spécifié si | |||
ISO-8859-1 ou ISO-2022-JP, encoder les caractères | |||
étendus | |||
jeuCorps | Entier | -1 = Utiliser le paramétrage courant, 0 = Ne rien faire, | |
1 = Convertir dans le jeu de caractères spécifié si | |||
ISO-8859-1 ou ISO-2022-JP | |||
Résultat | Entier | Code d'erreur |
Description
La commande SMTP_Charset automatise le support des caractères étendus dans les messages lors de leur envoi. Si cette commande n'est pas appelée ou si ses deux paramètres sont mis à 0, les commandes Internet de 4D version 6.7 ou supérieure fonctionneront de la même manière qu'en version 6.5.x.
La commande SMTP_Charset permet, d'une part, d'indiquer si le jeu de caractères défini dans le paramètre typeCorps de la commande SMTP_Prefs doit être appliqué aux en-têtes et au corps des messages à envoyer ; d'autre part, elle permet de définir si un en-tête comportant des caractères étendus doit être encodé sous la forme "=?ISO-8859-1?Q?Test=E9?= ", conformément au RFC 1342.
Cette commande a une portée globale et interprocess : elle agit sur tous les messages ultérieurs envoyés à l'aide des commandes SMTP_QuickSend et SMTP_Send et ce, dans tous les process 4D.
La commande SMTP_Charset est particulièrement utile pour le traitement des caractères étendus dans les en-têtes "Subject" ou les noms insérés dans les adresses (par exemple, pour l'encodage d'adresses sous la forme "=?ISO-8859-1?Q?Test=E9?= <test@n.net>").
En fonction des champs d'en-tête, l'encodage (toujours en base 64 à l'exception de l'en-tête "Subject" et dans le jeu de caractères fixé par SMTP_SetPrefs) est effectué de la manière suivante :
Pour les en-têtes "Subject" et "Comments" (en-têtes appelés "non structurés") : toute la chaîne est encodée si elle comporte des caractères étendus ;
Pour les en-têtes "From", "To", "Cc", "Bcc", "Sender", "ReplyTo", "InReplyTo" (en-têtes appelés "structurés") :
- Ce qui est entre < > est systématiquement considéré comme une adresse eMail et n'est | |
jamais encodé ; | |
- Les caractères séparateurs tels que SPC < > ( ) @ , ; : \ " / ? . = ne sont jamais encodés ; | |
- Ce qui se trouve entre deux séparateurs est encodé s'il y a des caractères étendus. |
Exemples d'adresses :
- someone@somewhere n'est pas encodé ; | |
- Michèle <michele@somewhere>, seul le mot Michèle est encodé. |
Le paramètre encoderEntêtes définit les traitements à appliquer aux champs d'en-tête lors de l'envoi des messages. Par défaut, ce paramètre a pour valeur 0.
-1 : Utiliser les paramètrages courants ;
0 : Ne rien faire
1 : | - D'une part, si la commande SMTP_SetPrefs définit le jeu de caractères comme étant de |
l'ISO-8859-1 ou de l'ISO-2022-JP, l'en-tête est converti dans le jeu de caractères spécifié, | |
- D'autre part, les champs d'en-tête sont encodés sous la forme "=?Jeu de caractères | |
spécifié par SMTP_SetPrefs?Encodage Base64 systématiquement?Test=E9?= " (RFC 1342) | |
s'ils contiennent des caractères étendus et ce, quel que soit le jeu de caractères spécifié. | |
- Exception : l'en-tête "Subject" est encodé dans le mode défini par le paramètre typeCorps | |
de la commande SMTP_SetPrefs si nécessaire. |
Note : Les en-têtes de type X_Mailer doivent être en ASCII US.
Le paramètre jeuCorps définit les traitements à appliquer au corps du message lors de son envoi. Par défaut, ce paramètre a pour valeur 0.
-1 : Utiliser les paramètrages courants ;
0 : Ne rien faire ;
1 : Si la commande SMTP_SetPrefs définit le jeu de caractères comme étant de l' ISO-8859-1 ou de l'ISO-2022-JP, le texte du corps du message est converti dans le jeu de caractères spécifié.
Exemple
Exemple de traitement des caractères étendus :
SMTP_SetPrefs(1;1;0) $err:=SMTP_Charset(1;1) $err:=SMTP_QuickSend("monmail.com";"monadresse";"destination";"L'euro €";"Le symbole de l'Euro est €") `Le sujet et le corps du message sont convertis en ISO-8859-1, `Le sujet est encodé conformément au RFC 1342
Référence