[Résolu] Thread pour mail

Posté par toco le 12/7/2006 9:33:56
Bonjour,
Je souhaite faire envoyé un mail en tache de fond via GPRS.
l'envoi en mode normal fonctionne bien, mais lorsque j'utilise ThreadExecute(), cela ne foncttionne plus!
Le motif de cette utilisation est que pendant l'envoi du mail, l'application est bloquée.
FONCTION bEnvoyerMessage1()

// Variables locales
i 					est un entier
bOK 				est un booléen
sMsg 				est une chaîne
bAuMoinsUnContact	est un booléen = Faux
sSujet 				est une chaîne = MaFenêtre..Titre
sContenu			est une chaîne = "Ci-joint, message du PC " + ESP +...
									Fiche_Intervention_Renseignements_Intervention_Renseignements.nom_pc

// Envoi d'un mail

sSMTP est une chaîne=INILit("SMTP","SMTP","", fRepEnCours() +"\Mail.ini")

// Connexion à la messagerie si pas de session en cours
// Ouverture de la session
EmailOuvreSessionSMTP(gsUser,sSMTP);Multitâche(-10)
SI ErreurDétectée ALORS
	Erreur("Impossible d'établir la connexion", ErreurInfo(errRésumé))
FIN

// Insérer votre traitement ici
// Remise à zéro de la structure du mail
EmailRAZ()

// On vérifie qu'il y a au moins un client sélectionné
POUR i=1 A TableOccurrence(Table_Contacts)
	// si le client fait partie des destinataires
	SI Table_Contacts.inter[i] ALORS
		bAuMoinsUnContact = Vrai
	FIN
FIN

SI bAuMoinsUnContact=Faux ALORS
	Info("Aucun contact sélectionné")
	
FIN


// Mémorise le message-type
	Email.Expéditeur = gsExpéditeur      		// L'expéditeur
	Email.NbDestinataire = 1                    // Le nombre de destinataires
	Email.Sujet = sSujet                        // Le sujet
	Email.Message = sContenu                    // Le corps du message
	Email.Attache = fRepEnCours()+"\Mess.pdf"
	Email.NbAttache = 1
	
// initialisation de la table
POUR i=1 A TableOccurrence(Table_Contacts)
	Table_Contacts.Col_etat[i] = ""
FIN

// pour chaque ligne de la table
POUR i=1 A TableOccurrence(Table_Contacts)
	// si le client fait partie des destinataires
	SI Table_Contacts.inter[i] ALORS
		TableSelectPlus(Table_Contacts,i)
		Col_etat[i]="En cours" ; Multitâche(-10)
		// Personnalisation du message
		// Envoi du message
		// Préparation du message
		Email.Destinataire[1] = Table_Contacts.mail_contact[i]	        // Le destinataire
	
		
		bOK=EmailEnvoieMessage(gsUser)
				
		SI PAS bOK ALORS
			SI PAS gbSessionOuverte ALORS
				Col_etat[i]="Abandon"
				SORTIR
			SINON
				Col_etat[i]="Echec"
			FIN
		SINON
			Col_etat[i]="Envoyé" ; MultitâcheRepeint();Multitâche()
		FIN
	FIN
FIN



SI bOK ALORS
	// ferme la fiche
	Ferme(Fiche_Renseignements_Intervention)
FIN



Appel du thraed:
ThreadMode(threadAuto)
ThreadExécute("envoi",threadUtiliseHyperFile,"bEnvoyerMessage1")


Merci de votre aide!

Cette contribution était de : http://old.wdforge.org/newbb/viewtopic.php?forum=17&topic_id=4344&post_id=17954