bonjours
j'ai un probleme d'envoi d'email dans mon application et j'ai pas pu connaitre la cause!
j'ai une fenetre qui contient les champs de saisi pour les parametres du message a envoier (objet, contenu , piece jointe , destinataire,..)
en cliquant sur le bouton envoyer qui a pour code:
procedure local sPrepareMessage:
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
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
59
60
61
62
63
64
65
66 // à faire : insérer votre code ici // Variables locales i est un entier bOK est un booléen sMsg est une chaîne bAuMoinsUnClient est un booléen = Faux imax est un entier = TableOccurrence(TableClient) // On vérifie qu'il y a au moins un client sélectionné POUR i=1 A imax // si le client fait partie des destinataires SI TableClient.ColInter[i] ALORS bAuMoinsUnClient = Vrai FIN FIN SI bAuMoinsUnClient=Faux ALORS Info("Aucun client sélectionné") RETOUR FIN Sablier() // Mémorise le message-type INIEcrit("EMAIL","Objet",SAI_Objet,fRepEnCours()+"\Mailing.ini") nIdFic est un entier = fOuvre("Message.txt", foCréation+foEcriture) fEcrit(nIdFic, SaisieTexte) fFerme(nIdFic) INIEcrit("EMAIL","PJ",SaisiePJ,fRepEnCours()+"\Mailing.ini") // initialisation de la table POUR i=1 A imax TableClient.ColEtat[i] = "" FIN // pour chaque ligne de la table POUR i=1 A imax // si le client fait partie des destinataires SI TableClient.ColInter[i] ALORS TableSelectPlus(TableClient,i) ColEtat[i]="En cours" Message(ChaîneConstruit("Envoi du mail à ",ColMail[i])) ; MultitâcheRepeint() // Personnalisation du message sMsg=sPrepareMessage(SaisieTexte,i) // Envoi du message bOK=bEnvoyerMessage(ColMail[i],SAI_Objet,sMsg,SaisiePJ) SI PAS bOK ALORS SI PAS gbSessionOuverte ALORS ColEtat[i]="Abandon" SORTIR SINON ColEtat[i]="Echec" FIN SINON ColInter[i]=Faux ColEtat[i]="Envoyé" ; MultitâcheRepeint() FIN FIN FIN Sablier(Faux) Message() SI bOK ALORS Info("Envoi des eMails terminé.")
la procedure local bEnvoyerMessage
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 FONCTION sPrepareMessage(sMessageType,nLigne) // On remplace les balises spécifiques par leur valeur dans le fichier HLitRecherche(Client,NumClient,TableClient.ColID[nLigne]) sContenu est une chaîne = sMessageType sContenu = Remplace(sContenu, "[%CIV%]",Client.Civilite) sContenu = Remplace(sContenu, "[%NOM%]",Client.NomClient) sContenu = Remplace(sContenu, "[%PRENOM%]",Client.Prénom) sContenu = Remplace(sContenu, "[%ADR1%]",Client.Adresse) //sContenu = Remplace(sContenu, "[%ADR2%]",CLIENT.Adresse2) sContenu = Remplace(sContenu, "[%CP%]",Client.CodePostal) sContenu = Remplace(sContenu, "[%VILLE%]",Client.Ville) RENVOYER sContenu
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
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36 FONCTION bEnvoyerMessage(sAdresse,sObjet,sContenu,sPJ="") // Envoi d'un mail // Connexion à la messagerie si pas de session en cours SI PAS gbSessionOuverte ALORS SI PAS Ouvre(Fen_Connexion) ALORS RENVOYER Faux FIN // Remise à zéro de la structure du mail EmailRAZ() // Préparation du message Email.Expéditeur = gsExpéditeur // L'expéditeur Email.Destinataire[1] = sAdresse // Le destinataire Email.NbDestinataire = 1 // Le nombre de destinataires Email.Sujet = sObjet // Le sujet Email.Message = sContenu // Le corps du message // Pièces jointes sListePJ est une chaîne = sPJ+";" sFichier est une chaîne i est un entier Email.NbAttache = 0 BOUCLE i++ sFichier=SansEspace(ExtraitChaîne(sListePJ,i,";")) SI sFichier = EOT ALORS SORTIR SI fFichierExiste(sFichier) = Vrai ALORS Email.NbAttache++ Email.Attache[Email.NbAttache]=sFichier FIN FIN // Envoi du mail RENVOYER EmailEnvoieMessage(gsUser)
une fenetre parametre email s'ouvre avec des champs de saisi pour les parametre de connexion au serveur de messagerie et un bouton OK pour envoyer l'email apres le saisi des parametres:
le problem c'est que en testant tout ca, le teste se bloque et rien ne s'envoi!!
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
16
17
18
19
20
21
22
23
24
25 gsUser=USER gsPwd=PWD gsPOP3=POP3 gsSMTP=SMTP gsExpéditeur=EXPEDITEUR // Mémorise les paramètres INIEcrit("CONNEXION","User",gsUser,ComplèteRep(fRepExe())+"Mailing.ini") // Compte de messagerie INIEcrit("CONNEXION","Pwd",gsPwd,ComplèteRep(fRepExe())+"Mailing.ini") // Mot de passe INIEcrit("CONNEXION","POP3",gsPOP3,ComplèteRep(fRepExe())+"Mailing.ini") // Adresse du serveur POP3 INIEcrit("CONNEXION","SMTP",gsSMTP,ComplèteRep(fRepExe())+"Mailing.ini") // Adresse du serveur SMTP INIEcrit("CONNEXION","eMail",gsExpéditeur,ComplèteRep(fRepExe())+"Mailing.ini") // eMail de l'expéditeur pour réponse // Connexion à la messagerie Message("Connexion en cours ....."); Sablier(Vrai) gbSessionOuverte=EmailOuvreSession(gsUser, gsPwd, gsPOP3, gsSMTP) SI PAS gbSessionOuverte ALORS Message("La connexion a échouée."); Sablier(Faux) Erreur("Pb de connexion",EmailMsgErreur(Email.Erreur)) RETOUR FIN Sablier(Faux) Ferme("",Vrai)
est-ce que vous-pouvez jetter un coup d'oeil sur le code et me dire s'il y a quelque chose qui cloche?
merci beaucoup
Partager