Précédent   Forum du club des développeurs et IT Pro > Environnements de développement > Autres EDI > 4D
4D Forum d'entraide sur 4D. Avant de poster -> FAQ 4D
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 19/11/2012, 16h42   #1
Vincent Heude
Membre à l'essai
 
Homme Vincent Heude
Formateur bancaire
Inscription : janvier 2009
Messages : 69
Détails du profil
Informations personnelles :
Nom : Homme Vincent Heude
Âge : 59
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Formateur bancaire

Informations forums :
Inscription : janvier 2009
Messages : 69
Points : 24
Points : 24
Par défaut Obtenir des CR/LF dans les mails envoyés

Bonjour,

Sous Windows et 4D V13

Mon premier réglage au début de ma méthode d'envoi de mail était :
Code :
1
2
3
4
 
SMTP_SetPrefs (1;1;0)
$err:=SMTP_Charset (1;1)
$Err:=SMTP_New ($smtp_id)  //Création du message
.......

Les caractères accentués sont ok mais les retours à la ligne écrits dans le mail à l'envoi, ne se retrouvent pas à la réception.

par ex. je tape :

Ligne 1
Ligne 2

J'envoie
et je reçois :

Ligne 1 Ligne 2.

J'ai rajouté au début de la méthode
Code :
1
2
3
 
$Temp:=vMessage  //---corps du message---
$Temp:=Remplacer chaine($Temp;"¶";"\r,\n";*)
pour forcer le retour chariot et la création d'une nouvelle ligne
aucun résultat

Une idée ?
Merci d'avance
Vincent Heude est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/11/2012, 10h17   #2
stanc
Membre habitué
 
Inscription : mai 2007
Messages : 130
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 130
Points : 131
Points : 131
Bonjour,

C'est bizarre. Je n'ai jamais eu de souci avec ça.

C'est quoi ce caractère "¶" que tu tentes de remplacer ? Pourquoi serait-il là à la place d'un retour chariot ? De toute façon, si j'en crois la doc, c'est un CR simple qu'il faut, pas CRLF.

Essaies SMTP_SetPrefs(1;15;0) ou SMTP_SetPrefs(0;1;0) à tout hasard.
stanc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/11/2012, 10h38   #3
stanc
Membre habitué
 
Inscription : mai 2007
Messages : 130
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 130
Points : 131
Points : 131
En fait la doc n'est pas claire. D'un côté, elle dit que les serveurs SMTP attendent CRLF comme fin de ligne et de l'autre que les CRLF seront remplacée par un CR simple si on met 1 en premier paramètre de SMTP_SetPrefs. Hors ça fonctionne chez moi très bien avec ce 1.
stanc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2012, 18h11   #4
Vincent Heude
Membre à l'essai
 
Homme Vincent Heude
Formateur bancaire
Inscription : janvier 2009
Messages : 69
Détails du profil
Informations personnelles :
Nom : Homme Vincent Heude
Âge : 59
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Formateur bancaire

Informations forums :
Inscription : janvier 2009
Messages : 69
Points : 24
Points : 24
Bonsoir Stanc

En fait, j'ai trouvé la solution hier soir tard :

Dans ma méthode, j'avais le code suivant :

Code :
1
2
3
4
 
 Si ($Err=0)
 $Err:=SMTP_AddHeader ($smtp_id;"Content-Type:";"text/html;charset=ISO-8859-1";1)  //définition de l'entête du message
  //Fin de si
Je l'ai mis en commentaire et du coup, le code global fonctionne

Cela vient peut-être du fait que ce code est issu d'une auto-formation de 4D V11 SQL (gestion d'un parc informatique) et qu'à l'époque (il n'y a pas si longtemps !) on n'était pas en unicode ?

Après moult essais, mon code est devenu :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
 
$code1:=Code de caractere("\r")
$code2:=Code de caractere("$para;")
  //$Temp:=vMessage  //---corps du message---
  //$crlf:="\r"+"\n"
SMTP_SetPrefs (1;1;0)
$err:=SMTP_Charset (1;1)
vMessage:=Remplacer chaine(vMessage;"$code1";"$code2";*)  //"\r";$crlf;*)  //" pour tester le CR."
ECRIRE VARIABLES("mesvariables";vMessage)
$Err:=SMTP_New ($smtp_id)  //Création du message
  //Si ($Err=0)
  //$Err:=SMTP_AddHeader ($smtp_id;"Content-Type:";"text/html;charset=ISO-8859-1";1)  //définition de l'entête du message
  //Fin de si 
Si ($Err=0)
$Err:=SMTP_Host ($smtp_id;<>Serveur_SMTP)  // une adresse IP ou "ns0.ovh.net", "smtp.free.fr" "smtp.wanadoo.fr" selon les cas*`Adresse du serveur SMTP
Fin de si 
Si ($Err=0)
$Err:=SMTP_From ($smtp_id;vEmetteur)  //Adresse email de l'expéditeur
Fin de si 
Si ($Err=0)
$Err:=SMTP_Subject ($smtp_id;vObjet)  //Objet du mail
Fin de si 
Si ($Err=0)
$Err:=SMTP_To ($smtp_id;vDestinataire;1)  //Adresse email du destinataire
Fin de si 
Si ($Err=0)
$Err:=SMTP_Cc ($smtp_id;vCopie;1)  //Adresse email du destinataire en copie
Fin de si 
Si ($Err=0)
LIRE VARIABLES("mesvariables";vMessage)
$Err:=SMTP_Body ($smtp_id;vMessage)  //Contenu du message
Fin de si 
Si ($Err=0)
$Err:=SMTP_Attachment ($smtp_id;vPiece_Jointe;2;1)  //Fichier joint. vérifier les valeurs 2 et 1
Fin de si 
  //  //--------------est-ce absolument nécessaire ?--------------------
  //Si ($Err=0)
  //$User_SMTP:="UserSMTP"
  //$MDP_SMTP:="mot de passe SMTP"
  //$Err:=SMTP_Auth ($smtp_id;$User_SMTP;$MDP_SMTP)  //authentification sur le serveur SMTP
  //Fin de si 
  //  //--------------Fin de : est-ce absolument nécessaire ?--------------------
 
Si ($Err=0)
$Err:=SMTP_Send ($smtp_id)  //Envoi du mail
Fin de si 
 
$0:=($Err=0)  //si ON n'a pas d'erreur, c'est que le mail est  bien parti
 
  //Si ($Err#0)
  //Si ($MessageAlerte)  //si on veut afficher les alertes (cas par défaut)
  //ALERTE("erreur n° "+Chaine($Err)++IT_ErrorText ($Err))
  //Fin de si 
  //Fin de si 
 
Si ($smtp_id#0)  //Si un message a bien été créé en mémoire
$Err:=SMTP_Clear ($smtp_id)  //effacement du message`si l'effacement ne s'est pas bien passé
Fin de si
Et il fonctionne

D'après toi, ce code fonctionnera-t-il sur toutes machines ?
Pour l'instant, mes tests se limitent à m'envoyer des mails à moi-même !
Vincent Heude est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2012, 18h21   #5
stanc
Membre habitué
 
Inscription : mai 2007
Messages : 130
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 130
Points : 131
Points : 131
Bonjour,

Effectivement, il manquait un morceau du problème. En html, un retour chariot est symbolisé par <br/>. Il n'a que faire des CRLF. Si tu envoies du texte brut, que tu soies en unicode ou non, le header text/html est donc contre-indiqué. Ton code devrait bien fonctionner maintenant quelle que soit la plateforme puisque c'est le plug-in qui prend en charge l'encodage.
stanc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/11/2012, 08h37   #6
Vincent Heude
Membre à l'essai
 
Homme Vincent Heude
Formateur bancaire
Inscription : janvier 2009
Messages : 69
Détails du profil
Informations personnelles :
Nom : Homme Vincent Heude
Âge : 59
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Formateur bancaire

Informations forums :
Inscription : janvier 2009
Messages : 69
Points : 24
Points : 24
Bonjour

Et merci
Vincent Heude est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 04h46.


 
 
 
 
Partenaires

Hébergement Web