Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 6 sur 6
  1. #1
    Nouveau Membre du Club
    Homme Profil pro Vincent Heude
    Formateur bancaire
    Inscrit en
    janvier 2009
    Messages
    74
    Détails du profil
    Informations personnelles :
    Nom : Homme Vincent Heude
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Formateur bancaire

    Informations forums :
    Inscription : janvier 2009
    Messages : 74
    Points : 27
    Points
    27

    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

  2. #2
    Membre habitué
    Inscrit en
    mai 2007
    Messages
    148
    Détails du profil
    Informations forums :
    Inscription : mai 2007
    Messages : 148
    Points : 148
    Points
    148

    Par défaut

    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.

  3. #3
    Membre habitué
    Inscrit en
    mai 2007
    Messages
    148
    Détails du profil
    Informations forums :
    Inscription : mai 2007
    Messages : 148
    Points : 148
    Points
    148

    Par défaut

    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.

  4. #4
    Nouveau Membre du Club
    Homme Profil pro Vincent Heude
    Formateur bancaire
    Inscrit en
    janvier 2009
    Messages
    74
    Détails du profil
    Informations personnelles :
    Nom : Homme Vincent Heude
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Formateur bancaire

    Informations forums :
    Inscription : janvier 2009
    Messages : 74
    Points : 27
    Points
    27

    Par défaut

    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 !

  5. #5
    Membre habitué
    Inscrit en
    mai 2007
    Messages
    148
    Détails du profil
    Informations forums :
    Inscription : mai 2007
    Messages : 148
    Points : 148
    Points
    148

    Par défaut

    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.

  6. #6
    Nouveau Membre du Club
    Homme Profil pro Vincent Heude
    Formateur bancaire
    Inscrit en
    janvier 2009
    Messages
    74
    Détails du profil
    Informations personnelles :
    Nom : Homme Vincent Heude
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Formateur bancaire

    Informations forums :
    Inscription : janvier 2009
    Messages : 74
    Points : 27
    Points
    27

    Par défaut

    Bonjour

    Et merci

+ Répondre à la discussion
Cette discussion est résolue.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •