Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

4D Discussion :

Email multiple (je sèche..)


Sujet :

4D

  1. #1
    Futur Membre du Club
    Email multiple (je sèche..)
    Envoi par la commande SMTP_Send($SMTPid;1) d'un email à plusieurs utilisateurs
    Si je fais :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    C_TEXTE($Maildest)
    $Maildest:=""
    $Maildest:="bruno.tyty@gmail.com; [email]venus.essai@laposte.net"
    SMTP_New($SMTPid)
    ...
    ...
    ...
    $Locfail:=0
    $Locfail:=SMTP_To($SMTPid;$Maildest;0)  
    // Valeur retour $Locfail = 0
    ...
    ...
    $Locfail:=0
    $Locfail:=SMTP_Send($SMTPid;1)
    // Valeur retour $Locfail = 0


    La chaine $Maildest vue avec le débogueur est :
    "bruno.tyty@gmail.com; [email]venus.essai@laposte.net"
    Le message est envoyé aux 2 destinataires.


    Si je fais :
    Séléction des adhérents :Table Adhe sur l'email
    puis
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    $Maildest:=""
    $Maildest:= $Maildest+[Adhe]Email
    Tant que ([Adhe]Email#"") 
        $Maildest:= $Maildest+"; "+[Adhe]Email)
        ENREGISTREMENT SUIVANT([Adhe])
    Fin Tant que
    $Locfail:=0
    $Locfail:=SMTP_To($SMTPid;$Maildest;0)  
    // Valeur retour $Locfail = 0
    ...
    ...
    $Locfail:=0
    $Locfail:=SMTP_Send($SMTPid;1)
    // Valeur retour $Locfail = 0


    La chaine $Maildest vue avec le débogeur est :
    "bruno.tyty@gmail.com; [email]venus.essai@laposte.net"
    Mais le message ne part pas, aucun des destinataires ne reçoit l'email

    Si je fais la boucle en sortant après le 1er utilisateur
    La chaine $Maildest vue avec le débogueur est :
    "bruno.tyty@gmail.com"
    Ca marche

    Je ne vois pas ce qui cloche ;+(
    Merci de votre retour
    Bruno

  2. #2
    Membre du Club
    Bonjour Bruno

    Ce qui me choque le plus ce sont les crochets dans tes adresses email, ce n'est pas conforme aux RFC

    Personnellement je concatène les adresses avec une virgule et sans espace

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    $Destinataires:=$Email1+","+$Email2


    Dans ta boucle, le premier enregistrement est répété deux fois

    Il faudrait essayer ceci :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $Maildest:=""
    Tant que (Non( fin de selection([Adhe])))
      si ([Adhe]Email#"")//Ce contrôle ne suffit peut-être pas, il faudrait s'assurer que l'adresse email est valide
        $Maildest:= $Maildest+","+[Adhe]Email
      fin de si
      ENREGISTREMENT SUIVANT([Adhe])
    Fin Tant que

  3. #3
    Futur Membre du Club
    Merci de ta réponse.
    Mais sous 4D l'accès aux champs d'une table se fait de la façon suivante:
    [Nom de la Table]champ, d’où [Adhe]Email

    Ce n'est peut être pas conforme aux RFC (mais j'attends plus d'info).
    En tous cas c'est la syntaxe employée dans tous mes autres lignes de code d'accès aux tables et ailleurs ça marche.
    Le champs $Maildest affiché lors du debug est identique dans les 2 cas.

    De plus dans la norme IEEE des adresses email le séparateur de destinataire (et de champs en général) est ";".

    Effectivement dans le code posté en email le premier enregistrement est répèté 2 fois (erreur de copier/coller) le code réel est :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $Maildest:= $Maildest+[Adhe]Email
    ENREGISTREMENT SUIVANT([Adhe])
    Tant que ([Adhe]Email#"")
        $Maildest:= $Maildest+"; "+[Adhe]Email)
        ENREGISTREMENT SUIVANT([Adhe])
    Fin Tant que


    Enfin je vais essayer.
    Mais j'ai aussi une autre idée
    Je vous tiens au courant.
    Bruno

  4. #4
    Membre du Club
    Dans ton premier message tu écris :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    $Maildest:="bruno.tyty@gmail.com; [email]venus.essai@laposte.net"


    Les crochets sont dans le texte, c'est ça qui me semble bizarre

    Bien sûr que ce que suit est correct :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    $Maildest:= $Maildest+[Adhe]Email


    Mais là tu n'auras pas de crochets dans la valeur de la variable

  5. #5
    Futur Membre du Club
    J'ai trouvé
    Il faut faire ceci
    Séléction des adhérents :Table Adhe sur l'email
    puis

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Tant que ([Adhe]Email#"")
        Si ([Adhe]Email#"")
            $Locfail:=SMTP_To ($SMTPid;[Adhe]Email;0)  // Cette instruction avec Zéro en paramètre ajoute l'émail sélectionné à la liste des destinataires
        Fin de si
       ENREGISTREMENT SUIVANT([Adhe])
    Fin Tant que
    $Locfail:=0
    $Locfail:=SMTP_To($SMTPid;$Maildest;0)


    Ca marche, mais c'est mon mailserver (sfr) qui refuse (SMTP Error 550) a priori il refuse d'envoyer plusieurs email pour un compte gratuit?
    Merci de ton aide.
    Bruno