Comment envoyer des emails en CC ou CCI

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
Micoute
Messages : 2522
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Comment envoyer des emails en CC ou CCI

Message par Micoute »

Bonjour à tous,

en ce moment, je fais un logiciel pour l'association des diabétique de la Manche, et ils m'ont demandé un programme qui enregistre les nouveaux membres et qui puisse envoyer des courriels et des courriers postaux.

J'ai donc fait un logiciel en 3 parties pour l'instant : 1 principal qui appelle les autres parties qui sont l'enregistrement des nouveaux membres, l'enregistrement des groupes de membres, et le formulaire de courriel où l'expéditeur est connu et fixé à l'avance puisqu'il s'agit de l'association, là où ça se complique c'est que l'utilisateur doit pouvoir choisir un ou plusieurs destinataires, ou il peut choisir aussi les options #PB_Mail_To, #PB_Mail_Cc et/ou #PB_Mail_Bcc, c'est parfaitement faisable puisque ces options sont natives, mais je ne sais pas comment aborder ce problème.

est-ce que quelqu'un pourrait m'orienter dans la bonne direction, déjà je pense qu'il faut que je fasse une liste des membres dans laquelle on pourra choisir plusieurs membres, si nécessaire, ou peut-être 2 une pour les copies carbone et une pour les copies carbone cachées.

De plus les emails envoyés devront avoir une signature qui se trouve dans le sous-répertoire Images.

Dans tous les cas, je vous remercie beaucoup, car je sais que votre me sera précieuse.

Il y aura aussi une quatrième parties qui devra permettre d'envoyer des courriers, mais je n'en suis pas encore là.

https://www.dropbox.com/sh/5umawca380np ... czCha?dl=0
Dernière modification par Micoute le mer. 25/juil./2018 6:09, modifié 1 fois.
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 5.73 PB 6.00 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
boby
Messages : 261
Inscription : jeu. 07/juin/2007 22:54

Re: Comment envoyer des emails en CC ou CCI

Message par boby »

Micoute, je pense qu'une base SQL / SQLite serait une solution à ce que tu veux faire.
Si j'ai bien compris ta demande, je ferait une table Groupe (Pour avoir la liste des groupe existant lors de la création des membres) et une table membe.
Avec les fonctions de recherche SQL tu pouras facilement sortire une liste des membres appartenant à un groupe.

Pour donner la possibilité de choisire les options Mail to, mailCC et Bcc, je ferais un truc dans le genre :

Code : Tout sélectionner

#Mailto = 1
#MailCC = 2
#MailBcc = 4
Declare result()
Declare close()
If OpenWindow(0,0,0,200,300,"bla",#PB_Window_ScreenCentered|#PB_Window_SystemMenu)
  CheckBoxGadget(0,10,10,150,30,"Mail TO")
  CheckBoxGadget(1,10,50,150,30,"Mail CC")
  CheckBoxGadget(2,10,90,150,30,"Mail Bcc")
  ButtonGadget(3,10,130,80,20,"Result")
  BindEvent(#PB_Event_CloseWindow,@close())
  BindGadgetEvent(3,@result())
EndIf
Repeat : WaitWindowEvent() : ForEver
Procedure result()
  Protected result
  If GetGadgetState(0) : result + 1 : EndIf
  If GetGadgetState(1) : result + 2 : EndIf
  If GetGadgetState(2) : result + 4 : EndIf
  If result & #Mailto : Debug "Mail to coché": EndIf
  If result & #MailCC : Debug "Mail CC coché" : EndIf
  If result & #MailBcc : Debug "Mail Bcc coché" : EndIf
EndProcedure
Procedure close()
  End
EndProcedure
Je ne sais pas si ça répond à ta question, je ne suis pas sur d'avoir bien compris ta demande.
Avatar de l’utilisateur
Micoute
Messages : 2522
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: Comment envoyer des emails en CC ou CCI

Message par Micoute »

Merci boby pour ton aide providentielle,

je me suis peut-être mal expliqué, car mon programme est devenu très complexe pour moi, c'est pourquoi j'ai fait des programmes interdépendants, qui ont chacun une fonction bien précise, en fait pour le problème que je cherche à résoudre pour le moment, c'est de pouvoir choisir les destinataires ayant un certain critère ; "Type 1", "Type 2", "Type donateur", "Type élan solidaire", etc... afin de les cibler plus facilement et l'idée que tu as eut me met déjà sur la bonne voie.

Le type de base de données que j'utilise est le format Json que je trouve très souple d'emploi pour les listes structurées.

Merci encore.
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 5.73 PB 6.00 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
boby
Messages : 261
Inscription : jeu. 07/juin/2007 22:54

Re: Comment envoyer des emails en CC ou CCI

Message par boby »

Le Json est un format de fichier très pratique par sa simplicité, malgré tout, si je t'encourage à choisire le SQL c'est pour la simplicité de ses fonctions de recherche
ex : "SELECT * FROM membre WHERE 'groupe' = 'Type donateur'"
while nextelement(DB)
... getdatabasestring(DB,colone)
wend

Et hop tu as la liste de tes membres du groupe "Type donateur". Beaucoup plus simple et plus performant que faire un système de recherche "maison".

J'éspère t'avoir aidé. Bon courage pour ton logiciel.
Avatar de l’utilisateur
Micoute
Messages : 2522
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: Comment envoyer des emails en CC ou CCI

Message par Micoute »

Oui tu as raison, mais j'ai l'habitude de (travailler) avec ce genre de fichier et je me suis habitué à sa syntaxe.

Un exemple juste pour montrer le principe :

Code : Tout sélectionner

 ;Copier le contenu du fichier json dans la liste provisoire avec les critères choisis

;Exemple avec vrai ou faux

ForEach Elements()
  If Left(Elements()\Reponse, 4) = "Vrai" Or Left(Elements()\Reponse, 4) = "Faux"
      AddElement(provis())
      provis()\Id = Elements()\Id
      provis()\Theme = Elements()\Theme
      provis()\Sujet = Elements()\Sujet
      provis()\Question = Elements()\Question
      provis()\Reponse = Elements()\Reponse
  EndIf
Next

Code : Tout sélectionner

;Autre exemple avec choix multiples

ForEach Elements()
  If Left(Elements()\Reponse, 9) = "Réponse a" Or 
      Left(Elements()\Reponse, 9) = "Réponse b" Or 
      Left(Elements()\Reponse, 9) = "Réponse c"
      AddElement(provis())
      provis()\Id = Elements()\Id
      provis()\Theme = Elements()\Theme
      provis()\Sujet = Elements()\Sujet
      provis()\Question = Elements()\Question
      provis()\Reponse = Elements()\Reponse
      Position1 = FindString(Elements()\Reponse, "a)")
      Position2 = FindString(Elements()\Reponse, "b)")
      Position3 = FindString(Elements()\Reponse, "c)")
      If Position1 = 9 Or Position2 = 9 Or Position3 = 9
          provis()\Reponse1 = "Réponse a"
          provis()\Reponse2 = "Réponse b"
          provis()\Reponse3 = "Réponse c"
      EndIf  
  EndIf
Next
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 5.73 PB 6.00 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Avatar de l’utilisateur
microdevweb
Messages : 1798
Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique

Re: Comment envoyer des emails en CC ou CCI

Message par microdevweb »

Bonjour Micoute,

Le soucis avec json est que si ta base de données devient plus conséquente, les recherche vont prendre énormément de temps car si je me fie à ton exemple tu parcours toute la base (imagine avec plusieurs milliers de records).

Donc je suis de l'avis de boby une base Sqllite serait nettement plus appropriée
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Avatar de l’utilisateur
Micoute
Messages : 2522
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: Comment envoyer des emails en CC ou CCI

Message par Micoute »

D'accord, mais je ne pense pas que le département de la Manche compte des milliers de diabétiques membres de cette association, et en plus il y a une base de données par sites de dépistage.

L'autre problème, c'est que je n'utilise plus les bases de données de type SQL depuis des lustres.
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 5.73 PB 6.00 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
boby
Messages : 261
Inscription : jeu. 07/juin/2007 22:54

Re: Comment envoyer des emails en CC ou CCI

Message par boby »

Pour un projet comme le tiens, je pense que tu n'auras vraiment pas besoin de beaucoup de commande SQL, rien que les bases :

INSERT INTO table VALUES ('valeur 1', 'valeur 2', ...)
UPDATE table SET colonne_1 = 'valeur 1', colonne_2 = 'valeur 2', colonne_3 = 'valeur 3' [WHERE condition]
SELECT colonne (ou * pour toutes les colonnes) FROM table [WHERE condition]

Et si tu as besoin d'autres fonctions http://sql.sh/cours

A toi de voir.
Avatar de l’utilisateur
Micoute
Messages : 2522
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: Comment envoyer des emails en CC ou CCI

Message par Micoute »

Je ne dis pas que c'est moins bien comme système, mais je ne suis pas habitué à penser avec celui-ci, j'ai plutôt l'habitude de penser comme ça:

Code : Tout sélectionner

ForEach Membres()
    ForEach Groupes()
      Grp = StringField(Groupes()\Nom_Groupe, 1,"")
      If Grp = GetGadgetText(#Cmb_Groupe)
        AddElement(Membres_de_Groupe())
        Membres_de_Groupe()\Nom = Membres()\Nom
        Membres_de_Groupe()\Prenom = Membres()\Prenom
        Membres_de_Groupe()\Email = Membres()\Email
        Membres_de_Groupe()\Groupe = Membres()\Groupe
      EndIf  
    Next  
  Next
Et comme ma liste structurée Membres_de_Groupe() ne contient que les membres ne correspondant à un seul critère, je travaille donc avec cette liste qui contient tous les emails dont j'ai besoin.

En fait je n'ai besoin que des emails à ce niveau-là. Merci encore pour l'aide que vous m'apportez, qui m'est précieuse.
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 5.73 PB 6.00 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
boby
Messages : 261
Inscription : jeu. 07/juin/2007 22:54

Re: Comment envoyer des emails en CC ou CCI

Message par boby »

Ta méthode fonctionne Micoute et tu ne devrais pas avoir de différence significative (niveau traitement des tâches) avant plusieurs centaines de membre, si tu te sens plus à l'aise en passant par le Json, ça fera le travail.

Au risque de te sembler insistant, pour tout ce qui est soft à base de BDD, le SQL c'est vraiment magique, je te conseille donc de t'y essayer dans des petits exercices quand ton programme seras fini.

Si tu as besoin d'aide sur d'autres sujets pour ton soft en cours (ou autres), n'hésite pas !
Avatar de l’utilisateur
Micoute
Messages : 2522
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: Comment envoyer des emails en CC ou CCI

Message par Micoute »

Je ferais bien de m'y atteler maintenant, car l'avantage de Json c'est que les bdd sont facilement compréhensible et modifiable aisément.

Le problème que je rencontre en ce moment, c'est comment inscrire la liste des membres qui vont recevoir le mail en copie carbone, je pense que j'aurais le même problème avec la copie carbone invisible.

Merci d'avance à tous ceux qui vont m'aider et j'en ai bien besoin.
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 5.73 PB 6.00 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
boby
Messages : 261
Inscription : jeu. 07/juin/2007 22:54

Re: Comment envoyer des emails en CC ou CCI

Message par boby »

Le problème que je rencontre en ce moment, c'est comment inscrire la liste des membres qui vont recevoir le mail en copie carbone
Inscrire où / dans quoi, au moment de l'envoie de mail ou au moment de la création des groupes / membres ?

Par rapport à quoi tu te base pour savoir qui devras recevoir un mail ? Toutes les personnes d'un même groupe ? Les personnes d'un même endroit ?

La comme ça c'est un peut chaud de t'aider, on a pas la moindre idée de comment (logistiquement parlant) on sais à qui envoyer un mail / dans quel conditions.
Avatar de l’utilisateur
Micoute
Messages : 2522
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: Comment envoyer des emails en CC ou CCI

Message par Micoute »

Normalement quand on reçoit une copie carbone, on a :
De : Micoute

A : boby ; falsam ; microdevweb ; etc...
C'est de ça que je veux parler.

Dans le cas d'une copie carbone invisible, je crois que ça doit être :
De : Micoute

A : boby
et je pense que chacun à la même, mais en ignorant que d'autres ont reçut le même message.
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 5.73 PB 6.00 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
boby
Messages : 261
Inscription : jeu. 07/juin/2007 22:54

Re: Comment envoyer des emails en CC ou CCI

Message par boby »

Code : Tout sélectionner

If CreateMail(0, "Micoute@test.com", "sujet")
  SetMailBody(0, "bla bla bla")
  AddMailRecipient(0, "association des diabétique de la Manche@mail.com", #PB_Mail_To)
  ForEach Membres()
    If Membres()\Groupe = Groupe_des_personnes_a_qui_envoyer_le_mail
      AddMailRecipient(0,membres()\Email,#PB_Mail_Cc
    EndIf 
  Next 
EndIf
Euh... Genre ça ? ou c'est pas ça que tu demandes ?
Avatar de l’utilisateur
Micoute
Messages : 2522
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: Comment envoyer des emails en CC ou CCI

Message par Micoute »

Ouah ! Figure-toi que ce n'est pas idiot du tout, rien que d'analyser l'action, j'imagine ce que ça va faire, je teste ça de suite.


Merci beaucoup de m'avoir enlevé la poutre que j'avais dans l'œil, tellement mon programme est devenu compliqué, alors que dans le procédural, il faut analyser action par action, dans un ordre bien déterminé.
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 5.73 PB 6.00 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Répondre