On truc m'échappe
Le
Frd

Bonjour,
sur Windows XP, j'ai un petit programme C++ qui me permet de renseigner
quelques champs, qui met à jour une base de données Access et qui doit
envoyer ensuite un mail à l'adresse saisie.
En gros il y a ça :
static CString g_csMailSubject = "?subject=Mon sujet";
static CString g_csMailDebutBody = "&body=";
static CString g_csMailBody = "bonjour, patati patata%0a";
static CString g_csMailBody2 = _T("Voici nanani nanana ");
static CString g_csMailFin = _T("%0aJe me tiens à votre disposition.%0a");
static CString g_csEmail = "uneadresse@mail.qqchose";
static CString g_csCmdMailto = _T(" ");
void SendMail(CString cle)
{
g_csCmdMailto = _T("mailto:")+g_csEmail+
g_csMailSubject+g_csMailDebutBody+g_csMailBody+
g_csMailBody2+g_csMailFin;
HINSTANCE err = ShellExecute ( NULL, _T("open"), _T("thunderbird"),
g_csCmdMailto, NULL, SW_SHOWNORMAL);
}
Curieusement, la CString g_csCmdMailto contient tout mon texte, mais à
l'arrivée le texte du mail ne contient plus le "à" ce qui donne
"Je me tiens votre disposition".
Le "à" disparaît quelque soit l'endroit où il est situé dans la chaîne
en fait.
Je n'ai pas utilisé ça avec d'autres courrielleurs et j'ai essayé de
changer les paramètres d'encodage de Thunderbird, sans succès.
Toute idée sera la bienvenue,
merci d'avance
XPost et suivi sur fr.comp.mail
--
Fred
Envoyé depuis ma Gameboy
sur Windows XP, j'ai un petit programme C++ qui me permet de renseigner
quelques champs, qui met à jour une base de données Access et qui doit
envoyer ensuite un mail à l'adresse saisie.
En gros il y a ça :
static CString g_csMailSubject = "?subject=Mon sujet";
static CString g_csMailDebutBody = "&body=";
static CString g_csMailBody = "bonjour, patati patata%0a";
static CString g_csMailBody2 = _T("Voici nanani nanana ");
static CString g_csMailFin = _T("%0aJe me tiens à votre disposition.%0a");
static CString g_csEmail = "uneadresse@mail.qqchose";
static CString g_csCmdMailto = _T(" ");
void SendMail(CString cle)
{
g_csCmdMailto = _T("mailto:")+g_csEmail+
g_csMailSubject+g_csMailDebutBody+g_csMailBody+
g_csMailBody2+g_csMailFin;
HINSTANCE err = ShellExecute ( NULL, _T("open"), _T("thunderbird"),
g_csCmdMailto, NULL, SW_SHOWNORMAL);
}
Curieusement, la CString g_csCmdMailto contient tout mon texte, mais à
l'arrivée le texte du mail ne contient plus le "à" ce qui donne
"Je me tiens votre disposition".
Le "à" disparaît quelque soit l'endroit où il est situé dans la chaîne
en fait.
Je n'ai pas utilisé ça avec d'autres courrielleurs et j'ai essayé de
changer les paramètres d'encodage de Thunderbird, sans succès.
Toute idée sera la bienvenue,
merci d'avance
XPost et suivi sur fr.comp.mail
--
Fred
Envoyé depuis ma Gameboy
Sûrement un problème d'encodage :
- En quoi est encodée ta chaîne dans ton source ? (ISO-8859, UTF-8...)
- En quoi le compilateur va l'encoder dans l'exécutable ?
- Il faut alors ajouter un champs dans le mail spécifiant cet encodage.
--
Serge http://leserged.online.fr/
Mon blog: http://cahierdesergio.free.fr/
Soutenez le libre: http://www.framasoft.org
Le codage du caractère ne correspond probablement pas à ce qui est
annoncé dans la conception du mail ou le mail conçu ne précise tout
simplement pas de codage du tout.
Il est aussi possible de coder ponctuellement des caractères en base64
mais ça peut devenir assez lourd en fonction de la fréquence
d'apparition des caractères à coder.
Mots clefs de recherche : content-type, charset, mime, etc.
--
Bertrand Usse
En ISO-8859-1 sans doute...
Aucune idée, c'est un programme fait avec Visual 6 et j'ai pas trouvé
d'option.
Genre dans la commande mailto à coté de "subjet=" et "&body=" ?
--
Fred
Curieux que les autres caractères accentués passent bien eux.
J'ai un seul "à" dans ce mail !
Yes...
Tu encodes les sauts de ligne, en mettant %0a : c'est très bien
(0A est le code pour le pseudo-caractère «newline»)
Mais tu dois en faire autant pour les lettres accentués (et aussi pour
le caractère % lui-même, %25, et d'autres comme &,%26 ou =, %3d).
Là où cela commence à être un peu plus compliqué, c'est quand il faut
décider quel codage employé pour à. En gros, il y a deux choix
possibles: iso-8859-15 (celui que tu emploies pour le message où je
répond), où il faut utiliser %e0; ou bien utf-8 (autrement dit Unicode,
un code qui permet d'écrire dans toutes les langues et qui est donc le
codage utilisé en interne par Thunderbird), où il faut utiliser %c3%a0.
Antoine
P.S.: utilise _T() partout, ou nulle part, sinon tu auras des surprises
le jour où tu utiliseras UNICODE/_UNICODE...
Une information qui n'est pas totalement inutile de donner au départ...
Une explication dans ce cas pourrait être que «à» est encodé (en utf-8)
C3,A0 et que le A0 est «mangé» par une couche intermédiaire qui le
confond avec un caractère d'espacement.
Antoine
Merci bien pour ces pistes, que je testerai dès que possible
Et merci pour tes conseils.
--
Fred
Bonjour
au fait...
ça marche :)
C'est bien le %c3%a0 qui fonctionne.
J'ignore pourquoi les autres caractères accentués passent, mais voilà.
Fait.
Merci.
L'explication proposée Antoine Leca m'avait parue logique :
Une explication dans ce cas pourrait être que «à» est encodé (en utf-8)
C3,A0 et que le A0 est «mangé» par une couche intermédiaire qui le
confond avec un caractère d'espacement.
</>
En fait j'avais pensé la même chose, mais je n'avais pas pris la peine
de l'écrire puisque Antoine l'avait fait avant moi.