Précédent   Forum du club des développeurs et IT Pro > Environnements de développement > WinDev > Contribuez
Contribuez Vos contributions pour la rubrique Windev : articles, cours, tutoriels, faq, comparatifs, tests, sources, ...
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 24/09/2010, 10h41   #1
mail.spam
Modérateur
 
Avatar de mail.spam
 
Homme Sylvain
Développeur Windev et technicien maintenance
Inscription : janvier 2008
Messages : 1 657
Détails du profil
Informations personnelles :
Nom : Homme Sylvain
Âge : 34
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Développeur Windev et technicien maintenance
Secteur : Industrie

Informations forums :
Inscription : janvier 2008
Messages : 1 657
Points : 3 879
Points : 3 879
Par défaut Envoie de mail avec pièce jointe avec la messagerie par défaut de l'utilisateur

Bonjour,

Voilà quelques temps que je cherche un moyen d'utiliser le logiciel de messagerie par défaut d'un utilisateur afin d'envoyer un mail avec pièce jointe.
Et enfin ça y est, il existe une DLL MAPI32.dll qui permet de le faire.
C'est sur le site de jcougnaud que j'ai trouvé mon bonheur.

Voici une class qui permet l'envoi de mail avec pièce jointe

Merci à jcougnaud

La class téléchargeable ici est faite en Windev14

Voici son contenu pour les autres versions

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Cl_Mapi32 est une classe
PRIVÉ
	//	cette classe permet de gérer la préparation de mail pour le logiciel de messagerie par defaut.
	TabAdresseDestinataire est un tableau de 0 par 3 chaînes	//	1 - AdresseMail 	2 - Nom destinataire	3 - TypeDestinataire
	TabFicPieceJointe est tableau de 0 chaînes
FIN

//	Liste des codes erreurs
//	403	-	adresse mail non valide
//	404	-	le fichier pièce jointe pas trouvé
//	410 -	paramètre TypeDestinataire non valide
//	411 -	adresse déjà présente dans les destinataires
//	412	-	adresse mail pas ajouter, erreur Windev
//	421 -	piècejointe déjà présente
//	422	-	piècejointe pas ajouter, erreur Windev
//	431 - 	pas de destinataire
//	432 - 	erreur chargement DLL
//	450	-	erreur dans la mise à zero de la classe
//	500 et plus -	erreur dans l'envoie du message
//	501 -	message annuler par l'uilisateur donc non envoyé

Code :
Procédure Constructeur()
Code :
PROCEDURE Destructeur()
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// Résumé : Vérfie si le format de l'adresse mail en paramètre est valide ou non
// Syntaxe :
//[ <Résultat> = ] AdressMailValide (<UneAdresse> est chaîne)
//
// Paramètres :
//	UneAdresse (chaîne) : adresse mail à vérifier
// Valeur de retour :
// 	booléen :  Vrai si l'adresse est valide, Faux dans le cas contraire - gestion des erreurs avec erreurinfo()
//// Exemple :
//	SI PAS :AdressMailValide(UneAdresseMail) ALORS
//		Erreur(ErreurInfo(errMessage))
//	FIN
//
PROCEDURE AdressMailValide(UneAdresse est une chaîne)
	SI VérifieExpressionRégulière(UneAdresse, "[-.a-z0-9]+[@][-.a-z0-9]+[.][a-z]{2,4}") ALORS
		RENVOYER Vrai
	SINON
		ErreurDéclenche(403,dbgInfo(dbgElément)+ RC + RC + "Erreur : " + RC + "L'adresse '" + UneAdresse + "' n'est pas valide")
		RENVOYER Faux
	FIN
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
// Résumé : Ajoute un destinataire à la liste des destinataires en vue de l'utiliser dans PrépareMail
// Syntaxe :
//[ <Résultat> = ] AjouteDestinataire (<UneAdresseMail> est chaîne [, <NomAffiché> est chaîne [, <TypeDestinatire> est chaîne]])
//
// Paramètres :
//	UneAdresseMail (chaîne) : adresse mail à ajouter
//	NomAffiché (chaîne - valeur par défaut="") : Nom affiché dans la messagerie par défaut en plus de l'adresse mail
//	TypeDestinatire (chaîne - valeur par défaut="A") : "A" ou "Cc" ou "Cci"
// Valeur de retour :
// 	booléen :  Vrai si le destinataire est ajouté, Faux dans le cas contraire - gestion des erreurs avec erreurinfo()
//// Exemple :
//	SI PAS :AjouteDestinataire("mail.spam@fourniseur.fr")
//		Erreur(ErreurInfo(errMessage))
//		RETOUR
//	FIN
PROCEDURE AjouteDestinataire(UneAdresseMail est une chaîne,NomAffiché est une chaîne = "",TypeDestinatire est une chaîne = "A")
	LOCAL
	STypeDest est une chaîne
	//	on vérifie si le format de l'adresse est valide
	SI PAS :AdressMailValide(UneAdresseMail) ALORS
		ErreurDéclenche(ErreurInfo(errCode),ErreurInfo(errMessage))
		RENVOYER Faux
	SINON
		//	on vérifie si l'adresse ne figure pas déjà dans une des trois tableau
		SI TableauCherche(:TabAdresseDestinataire,tcLinéairePrécédent,1,UneAdresseMail) <> -1 ALORS
			ErreurDéclenche(411,dbgInfo(dbgElément)+ RC + RC + "Erreur : " + RC + "L'adresse '" + UneAdresseMail + "' a déjà été ajouté dans les destinataires")
			RENVOYER Faux
		FIN
		
		//	on ajoute l'adresse à la liste d'adresse suivant le type de destinataire
		SELON TypeDestinatire
			CAS "A"
				STypeDest = "1"
			CAS "Cc"
				STypeDest = "2"
			CAS "Cci"
				STypeDest = "3"
			AUTRE CAS
				ErreurDéclenche(410,dbgInfo(dbgElément)+ RC + RC + "Erreur : " + RC + "Le paramètre TypeDestinataire ne peut être que ""A"" , ""Cc"" ou ""Cci""")
				RENVOYER Faux
		FIN
		SI PAS TableauAjouteLigne(:TabAdresseDestinataire,UneAdresseMail,NomAffiché,STypeDest) ALORS
			ErreurDéclenche(412,dbgInfo(dbgElément)+ RC + RC + "Erreur : " + RC + "L'adresse '" + UneAdresseMail + "' n'as pas pu être ajouté." + RC +ErreurInfo(errMessage))
			RENVOYER Faux
		SINON
			RENVOYER Vrai
		FIN
	FIN
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
// Résumé : Ajoute un fichier à la liste des pièces jointes en vue de l'utiliser dans PrépareMail
// Syntaxe :
//[ <Résultat> = ] AjoutePiècejointe (<UnFichier> est chaîne)
//
// Paramètres :
//	UnFichier (chaîne) : Chemin complet du fichier à ajouter
// Valeur de retour :
// 	booléen :  Vrai si le fichier est ajouté, Faux dans le cas contraire - gestion des erreurs avec erreurinfo()
//// Exemple :
// Indiquez ici un exemple d'utilisation.
//	SI PAS :AjoutePiècejointe("D:\Fichier.txt") ALORS
//		Erreur(ErreurInfo(errMessage))
//		RETOUR
//	FIN

//
PROCEDURE AjoutePiècejointe(UnFichier est une chaîne)
	//	on vérifie si le fichier existe
	SI PAS fFichierExiste(UnFichier) ALORS
		ErreurDéclenche(404,dbgInfo(dbgElément)+ RC + RC + "Erreur : " + RC + "La pièce jointe '" + UnFichier + "' n'a pas été trouvée")
		RENVOYER Faux
	SINON
		//	on verifie que le fichier n'est pas déjà dans les pièces jointes
		SI TableauCherche(:TabFicPieceJointe,tcLinéairePrécédent,UnFichier) <> -1 ALORS
			ErreurDéclenche(421,dbgInfo(dbgElément)+ RC + RC + "Erreur : " + RC + "Le fichier '" + UnFichier + "' a déjà été ajouté dans les pièces jointes")
			RENVOYER Faux
		SINON
			//	on l'ajoute à la liste
			SI PAS TableauAjouteLigne(:TabFicPieceJointe,UnFichier) ALORS
				ErreurDéclenche(422,dbgInfo(dbgElément)+ RC + RC + "Erreur : " + RC + "Le fichier '" + UnFichier + "' n'as pas pu être ajouté aux pièces jointes." + RC +ErreurInfo(errMessage))
				RENVOYER Faux
			SINON
				RENVOYER Vrai
			FIN
		FIN
	FIN
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
// Résumé : Prépare le mail pour l'afficher dans le client de messagerie par défaut ou pour l'envoyer directement
// Syntaxe :
//[ <Résultat> = ] PrépareMail (<ObjetMail> est chaîne, <CorpsMail> est chaîne [, <EnvoiDirecte> est booléen [, <AvecAccusé> est booléen]])
//
// Paramètres :
//	ObjetMail (chaîne) : Objet du message
//	CorpsMail (chaîne) : Contenue du message
//	EnvoiDirecte (booléen - valeur par défaut=0) : Vrai si on envoie le mail sinon on affiche le client de messagerie
// 	AvecAccusé (booléen - valeur par défaut=0) : <indiquez ici le rôle de AvecAccusé>
// Valeur de retour :
// 	booléen :   
//// Exemple :
//	SI PAS :PrépareMail("Objet du message",Texte_RTF) ALORS
//		SI ErreurInfo(errCode) = 501 ALORS
//			Info("L'utilisateur a annulé l'envoie")
//		SINON
//			Erreur(dbgInfo(dbgLigne),ErreurInfo(errMessage))
//		FIN	
//	FIN
//
PROCEDURE PrépareMail(ObjetMail est une chaîne,CorpsMail est une chaîne,EnvoiDirecte est un booléen = Faux,AvecAccusé est un booléen = Faux)
LOCAL
	Sujet est une chaîne ASCIIZ sur 128
	Body est une chaîne ASCIIZ sur 1000
	MAPI_LOGIN_UI est un entier  
	MAPI_TO est un entier 
	N_I est un entier	//	compteur
	hdlLib est un entier
	hRes est un entier
	
	// définition des structures
	MapiMessage est une structure
		ulReserved est un entier  
		lpszSubject est un entier  
		lpszNoteText est un entier  
		lpszMessageTyp est un entier  
		lpszDateReceived est un entier  
		lpszConversationID est un entier  
		flFlags est un entier  
		lpOriginator est un entier  
		nRecipCount est un entier  
		lpRecips est un entier  
		nFileCount est un entier  
		lpFiles est un entier  
	FIN
	
	MapiFileDesc est une structure
		ulReserved est un entier  
		flFlags est un entier  
		nPosition est un entier  
		lpszPathName est un entier  
		lpszFileName est un entier  
		lpFileType est un entier  
	FIN
	
	MapiRecipDesc est une structure
		ulReserved est un entier  
		ulRecipClass est un entier  
		lpszName est un entier  
		lpszAddress est un entier  
		ulEIDSize est un entier  
		lpEntryID est un entier  
	FIN
	
	MapiMessage est une MapiMessage
	tabMapiFileDesc est un tableau de TableauOccurrence(:TabFicPieceJointe) MapiFileDesc
	tabMapiRecipDesc est un tableau de TableauOccurrence(:TabAdresseDestinataire) MapiRecipDesc

	TabPieceJointe est un tableau de TableauOccurrence(:TabFicPieceJointe) chaîne ASCIIZ sur 255 
	TabNomPieceJointe est un tableau de TableauOccurrence(:TabFicPieceJointe) chaîne ASCIIZ sur 255
	TabNomAdresse est un tableau de TableauOccurrence(:TabAdresseDestinataire) chaîne ASCIIZ sur 128
	TabAdresse est un tableau de TableauOccurrence(:TabAdresseDestinataire) chaîne ASCIIZ sur 255


	// si pas de destinataire on renvoie Faux
	SI TableauOccurrence(:TabAdresseDestinataire) =0 ALORS
		ErreurDéclenche(431,dbgInfo(dbgElément)+ RC + RC + "Erreur : " + RC + "Il n'y as aucun destinanatire")
		RENVOYER Faux
	FIN
	
	// On met à jour la structure des destinataires à partir du tableau dynamique
	POUR N_I = 1 _A_ TableauOccurrence(:TabAdresseDestinataire)
		// on prend l'adresse du destinataire
		TabAdresse[N_I]=:TabAdresseDestinataire[N_I][1]
		TabNomAdresse[N_I]=:TabAdresseDestinataire[N_I][2] = "" ? :TabAdresseDestinataire[N_I][1] SINON :TabAdresseDestinataire[N_I][2]
		MAPI_TO=Val(:TabAdresseDestinataire[N_I][3])
		// on force "SMTP:" si besoin dans l'adresse
		SI Position(TabAdresse[N_I],"SMTP:")=0 ALORS
			TabAdresse[N_I]="SMTP:"+TabAdresse[N_I]
		FIN
		tabMapiRecipDesc[N_I]:ulReserved = 0
		tabMapiRecipDesc[N_I]:ulRecipClass = MAPI_TO
		tabMapiRecipDesc[N_I]:lpszName = &TabNomAdresse[N_I]
		tabMapiRecipDesc[N_I]:lpszAddress = &TabAdresse[N_I]
		tabMapiRecipDesc[N_I]:ulEIDSize = Null
		tabMapiRecipDesc[N_I]:lpEntryID = Null
	FIN
	
	// on met à jour la structure des pièces jointes à partir du tableau dynamique
	POUR N_I=1 _A_ TableauOccurrence(:TabFicPieceJointe)
		TabPieceJointe[N_I]=:TabFicPieceJointe[N_I]
		TabNomPieceJointe[N_I]=""
		tabMapiFileDesc[N_I]:ulReserved = Null
		tabMapiFileDesc[N_I]:flFlags = 0
		tabMapiFileDesc[N_I]:nPosition = 0xFFFFFFFF
		tabMapiFileDesc[N_I]:lpszPathName = &TabPieceJointe[N_I]
		tabMapiFileDesc[N_I]:lpszFileName = &TabNomPieceJointe[N_I]
		tabMapiFileDesc[N_I]:lpFileType = Null
	FIN

	// on affecte l'objet et le corps
	Sujet=ObjetMail
	Body=CorpsMail
	
	// on regarde si on doit ouvrir le client de messagerie ou non
	SI EnvoiDirecte ALORS
		MAPI_LOGIN_UI=1 // on envoi directement
	SINON
		MAPI_LOGIN_UI=8 // on ouvre le client de messagerie
	FIN
	// chargement de la librairie Mapi32.dll
	hdlLib = AppelDLL32("Kernel32","LoadLibraryA","MAPI32.dll")
	SI hdlLib<32 ALORS
		ErreurDéclenche(432,dbgInfo(dbgElément)+ RC + RC + "Erreur : " + RC + "Impossible de charger MAPI32.DLL" + RC + ErreurInfo(errMessage))
		RENVOYER Faux
	FIN

	SI TableauOccurrence(TabFicPieceJointe) > 0 ALORS // on a des pièces jointes
		MapiMessage:nFileCount = TableauOccurrence(tabMapiFileDesc)
		MapiMessage:lpFiles = &tabMapiFileDesc
	SINON // on n'en a pas
		MapiMessage:nFileCount = 0
		MapiMessage:lpFiles = Null
	FIN

	// on affecte la structure du message
	MapiMessage:ulReserved = 0
	MapiMessage:lpszSubject = &Sujet
	MapiMessage:lpszNoteText = &Body
	MapiMessage:lpszMessageTyp = Null
	MapiMessage:lpszDateReceived = Null
	MapiMessage:lpszConversationID = Null
	SI AvecAccusé ALORS
		MapiMessage:flFlags = 2	
	SINON
		MapiMessage:flFlags = 0		
	FIN
	MapiMessage:lpOriginator = Null
	MapiMessage:nRecipCount = TableauOccurrence(tabMapiRecipDesc)
	MapiMessage:lpRecips = &tabMapiRecipDesc

	hRes =  AppelDLL32("MAPI32.DLL","MAPISendMail",Null,Handle(),&MapiMessage,MAPI_LOGIN_UI,Null)
	SI hRes<> 0 ALORS // il y a eu un problème
		Temporisation(50)
		SELON hRes
			CAS 1
				ErreurDéclenche(500 + hRes,dbgInfo(dbgElément)+ RC + RC + "Erreur : " + RC + "L'envoi a été annulé par l'utilisateur.")
			CAS 2
				ErreurDéclenche(500 + hRes,dbgInfo(dbgElément)+ RC + RC + "Erreur : " + RC + "Erreurs inattendues.")
			CAS 3
				ErreurDéclenche(500 + hRes,dbgInfo(dbgElément)+ RC + RC + "Erreur : " + RC + "Il n'y a pas de compte par défaut ou la connexion n'a pas été valide.")
			CAS 4
				ErreurDéclenche(500 + hRes,dbgInfo(dbgElément)+ RC + RC + "Erreur : " + RC + "Disque plein.")
			CAS 5
				ErreurDéclenche(500 + hRes,dbgInfo(dbgElément)+ RC + RC + "Erreur : " + RC + "Pas assez de mémoire.")
			CAS 9
				ErreurDéclenche(500 + hRes,dbgInfo(dbgElément)+ RC + RC + "Erreur : " + RC + "Il y a trop de pièces jointes.")
			CAS 10
				ErreurDéclenche(500 + hRes,dbgInfo(dbgElément)+ RC + RC + "Erreur : " + RC + "Il y a trop de destinataires.")
			CAS 11
				ErreurDéclenche(500 + hRes,dbgInfo(dbgElément)+ RC + RC + "Erreur : " + RC + "La pièce jointe n'a pas été trouvée.")
			CAS 12
				ErreurDéclenche(500 + hRes,dbgInfo(dbgElément)+ RC + RC + "Erreur : " + RC + "La pièce jointe n'a pas pu être ouverte.")
			CAS 14
				ErreurDéclenche(500 + hRes,dbgInfo(dbgElément)+ RC + RC + "Erreur : " + RC + "Destinataire inconnu.")
			CAS 15
				ErreurDéclenche(500 + hRes,dbgInfo(dbgElément)+ RC + RC + "Erreur : " + RC + "Le type de destinataire n'est pas Mapi_To, Mapi_Cc, Mapi_Bcc.")
			CAS 17
				ErreurDéclenche(500 + hRes,dbgInfo(dbgElément)+ RC + RC + "Erreur : " + RC + "Message invalide.")
			CAS 18
				ErreurDéclenche(500 + hRes,dbgInfo(dbgElément)+ RC + RC + "Erreur : " + RC + "Le texte du message est trop long.")
			CAS 21
				ErreurDéclenche(500 + hRes,dbgInfo(dbgElément)+ RC + RC + "Erreur : " + RC + "Destinataire ambigu.")
			CAS 25
				ErreurDéclenche(500 + hRes,dbgInfo(dbgElément)+ RC + RC + "Erreur : " + RC + "Destinataire invalide ou n'a pas d'adresse.")
			AUTRES CAS
				ErreurDéclenche(500 + hRes,dbgInfo(dbgElément)+ RC + RC + "Erreur : " + RC + ErreurInfo(errMessageSystème))
		FIN
		SI hdlLib>0 ALORS
			AppelDLL32("Kernel32","FreeLibrary",hdlLib)
			hdlLib = 0
		FIN
		RENVOYER Faux
	SINON
		SI hdlLib>0 ALORS
			AppelDLL32("Kernel32","FreeLibrary",hdlLib)
			hdlLib = 0
		FIN
		RENVOYER Vrai
	FIN
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// Résumé : Remet a vide tous les destinataires et les pièces jointes
// Syntaxe :
//[ <Résultat> = ] RAZ_Cl_Mapi32 ()
//
// Paramètres :
//	Aucun
// Valeur de retour :
// 	booléen :  // 	Aucune
//// Exemple :
// Indiquez ici un exemple d'utilisation.
//
PROCEDURE RAZ_Cl_Mapi32()
	TableauSupprimeTout(:TabAdresseDestinataire)
	SI ErreurDétectée ALORS
		ErreurDéclenche(450,dbgInfo(dbgElément)+ RC + RC + "Erreur : " + RC + ErreurInfo(errMessage))
		RENVOYER Faux
	FIN
	TableauSupprimeTout(:TabFicPieceJointe)
	SI ErreurDétectée ALORS
		ErreurDéclenche(450,dbgInfo(dbgElément)+ RC + RC + "Erreur : " + RC + ErreurInfo(errMessage))
		RENVOYER Faux
	FIN
	RENVOYER Vrai

Et voici un exemple d'envoie de mail avec destinataire et pièce jointe

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
UnMail est Cl_Mapi32

SI PAS UnMail:AjouteDestinataire("mail.spam@voila.fr") ALORS
	Erreur(ErreurInfo(errMessage))
	RETOUR
FIN

SI PAS UnMail:AjouteDestinataire("nom.prenom@fournisseur.fr","Destinaitre","Cc") ALORS
	Erreur(ErreurInfo(errMessage))
	RETOUR
FIN


SI PAS UnMail:AjoutePiècejointe("D:\prof729b.txt") ALORS
	Erreur(ErreurInfo(errMessage))
	RETOUR
FIN

SI PAS UnMail:PrépareMail("Objet du message","Texte dans le corps du message") ALORS
	SI ErreurInfo(errCode) = 501 ALORS
		Trace("Pas envoyé")
	SINON
		Erreur(dbgInfo(dbgLigne),ErreurInfo(errMessage))
	FIN	
FIN
SI PAS UnMail:RAZ_Cl_Mapi32() ALORS
	Erreur(dbgInfo(dbgLigne),ErreurInfo(errMessage))
FIN
Merci de me dire avec quels clients de messagerie cette class fonctionne
__________________
la touche est ton amie. l'aide ne mord pas quand on la consulte...
PS : n'oubliez jamais que nous ne sommes pas avec vous sur le projet. Donc plus vous donnez d'informations et d'exemples de codes et plus nous pourrons vous aider. (Un exemple vaut mieux que de longs discours...)

Pensez à utiliser les votes et à cliquer sur , merci
mail.spam est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 24/09/2010, 10h49   #2
mail.spam
Modérateur
 
Avatar de mail.spam
 
Homme Sylvain
Développeur Windev et technicien maintenance
Inscription : janvier 2008
Messages : 1 657
Détails du profil
Informations personnelles :
Nom : Homme Sylvain
Âge : 34
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Développeur Windev et technicien maintenance
Secteur : Industrie

Informations forums :
Inscription : janvier 2008
Messages : 1 657
Points : 3 879
Points : 3 879
D'après le créateur original de la class

Elle a été testée avec Outlook 2002, Outlook Express 6, Mozilla Thunderbird 1.0 et The Blat version 3.

Moi je l'ai testée avec Outlook 2007

Et vous sur quels clients de messagerie et quelles versions cette class fonctionne ?
__________________
la touche est ton amie. l'aide ne mord pas quand on la consulte...
PS : n'oubliez jamais que nous ne sommes pas avec vous sur le projet. Donc plus vous donnez d'informations et d'exemples de codes et plus nous pourrons vous aider. (Un exemple vaut mieux que de longs discours...)

Pensez à utiliser les votes et à cliquer sur , merci
mail.spam est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/09/2010, 14h52   #3
mail.spam
Modérateur
 
Avatar de mail.spam
 
Homme Sylvain
Développeur Windev et technicien maintenance
Inscription : janvier 2008
Messages : 1 657
Détails du profil
Informations personnelles :
Nom : Homme Sylvain
Âge : 34
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Développeur Windev et technicien maintenance
Secteur : Industrie

Informations forums :
Inscription : janvier 2008
Messages : 1 657
Points : 3 879
Points : 3 879
Ne fonctionne pas avec Foxmail car il ne gère pas MAPI
__________________
la touche est ton amie. l'aide ne mord pas quand on la consulte...
PS : n'oubliez jamais que nous ne sommes pas avec vous sur le projet. Donc plus vous donnez d'informations et d'exemples de codes et plus nous pourrons vous aider. (Un exemple vaut mieux que de longs discours...)

Pensez à utiliser les votes et à cliquer sur , merci
mail.spam est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/10/2010, 17h47   #4
Arnaud B.
Membre éprouvé
 
Homme Arnaud Benhamdine
Consultant
Inscription : octobre 2004
Messages : 213
Détails du profil
Informations personnelles :
Nom : Homme Arnaud Benhamdine
Localisation : France

Informations professionnelles :
Activité : Consultant
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2004
Messages : 213
Points : 455
Points : 455
Fonctionne avec Thunderbird 3.1.4
Arnaud B. est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 19/10/2010, 11h39   #5
mail.spam
Modérateur
 
Avatar de mail.spam
 
Homme Sylvain
Développeur Windev et technicien maintenance
Inscription : janvier 2008
Messages : 1 657
Détails du profil
Informations personnelles :
Nom : Homme Sylvain
Âge : 34
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Développeur Windev et technicien maintenance
Secteur : Industrie

Informations forums :
Inscription : janvier 2008
Messages : 1 657
Points : 3 879
Points : 3 879
Bonjour,

Il y a une erreur dans mon code

J'ai mis tcLinéairePrécédent au lieu de tcLinéaire
dans les codes de TableauCherche des procédures d'ajout de destinataires et de pièces jointes.
__________________
la touche est ton amie. l'aide ne mord pas quand on la consulte...
PS : n'oubliez jamais que nous ne sommes pas avec vous sur le projet. Donc plus vous donnez d'informations et d'exemples de codes et plus nous pourrons vous aider. (Un exemple vaut mieux que de longs discours...)

Pensez à utiliser les votes et à cliquer sur , merci
mail.spam est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/10/2010, 12h11   #6
Arnaud B.
Membre éprouvé
 
Homme Arnaud Benhamdine
Consultant
Inscription : octobre 2004
Messages : 213
Détails du profil
Informations personnelles :
Nom : Homme Arnaud Benhamdine
Localisation : France

Informations professionnelles :
Activité : Consultant
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2004
Messages : 213
Points : 455
Points : 455
Merci !
Arnaud B. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2012, 17h21   #7
API-COMTAT
Invité de passage
 
Homme Daniel Masse
Inscription : janvier 2012
Messages : 1
Détails du profil
Informations personnelles :
Nom : Homme Daniel Masse
Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : janvier 2012
Messages : 1
Points : 1
Points : 1
Par défaut Question complémentaire

Bonjour,

Savez vous si le texte pourrait être du texte HTML ?
Savez vous si on pourrait demander un accusé réception ?
Savez vous si l'on pourrait y joindre une signature ?

Merci d'avance
API-COMTAT est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/02/2012, 22h59   #8
wimbish
Membre Expert
 
Avatar de wimbish
 
Homme Christophe Vibert
Développeur informatique
Inscription : octobre 2006
Messages : 409
Détails du profil
Informations personnelles :
Nom : Homme Christophe Vibert
Âge : 38
Localisation : France, Manche (Basse Normandie)

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2006
Messages : 409
Points : 1 043
Points : 1 043
Merci Mail.spam pour cette contribution !

Pour ma part, j'utilise la classe "System.net.mail" du framework .net pour envoyer des mails.
Et pour répondre a API-COMTAT, si MAPI32.dll ne le permet pas, le "System.net.mail" le permet (sauf peux être la signature, je ne suis pas sûr)

pour avoir une trace dans le logiciel de messagerie, il suffit de se mettre en copie invisible.
wimbish est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/03/2012, 15h40   #9
rednight
Membre actif
 
Inscription : avril 2009
Messages : 306
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 306
Points : 176
Points : 176
Merci pour la contribution .

Me reste plus qu'à trouver comment changer de compte pour un envois en directe, dans le cas où l'utilisateur a plusieurs comptes mail sur son Thunderbird.
rednight est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/03/2012, 08h54   #10
mail.spam
Modérateur
 
Avatar de mail.spam
 
Homme Sylvain
Développeur Windev et technicien maintenance
Inscription : janvier 2008
Messages : 1 657
Détails du profil
Informations personnelles :
Nom : Homme Sylvain
Âge : 34
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Développeur Windev et technicien maintenance
Secteur : Industrie

Informations forums :
Inscription : janvier 2008
Messages : 1 657
Points : 3 879
Points : 3 879
Citation:
Envoyé par wimbish Voir le message
Merci Mail.spam pour cette contribution !

Pour ma part, j'utilise la classe "System.net.mail" du framework .net pour envoyer des mails.
Et pour répondre a API-COMTAT, si MAPI32.dll ne le permet pas, le "System.net.mail" le permet (sauf peux être la signature, je ne suis pas sûr)

pour avoir une trace dans le logiciel de messagerie, il suffit de se mettre en copie invisible.
Bonjour,

Peux tu mettre un exemple d'utilisation de la classe "System.net.mail".
Sinon pour moi l'avantage de mon code c'est que je peux pré-renseigner un mail puis l'ouvrir avec le logiciel de messagerie afin que l'utilisateur puisse faire des changements supplémentaires.

La copie invisible est toujours un moyen, mais dans ce cas autant utiliser les fonctions de mail de windev.
__________________
la touche est ton amie. l'aide ne mord pas quand on la consulte...
PS : n'oubliez jamais que nous ne sommes pas avec vous sur le projet. Donc plus vous donnez d'informations et d'exemples de codes et plus nous pourrons vous aider. (Un exemple vaut mieux que de longs discours...)

Pensez à utiliser les votes et à cliquer sur , merci
mail.spam est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2012, 14h26   #11
wimbish
Membre Expert
 
Avatar de wimbish
 
Homme Christophe Vibert
Développeur informatique
Inscription : octobre 2006
Messages : 409
Détails du profil
Informations personnelles :
Nom : Homme Christophe Vibert
Âge : 38
Localisation : France, Manche (Basse Normandie)

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2006
Messages : 409
Points : 1 043
Points : 1 043
Citation:
Envoyé par mail.spam Voir le message
Bonjour,

Peux tu mettre un exemple d'utilisation de la classe "System.net.mail".
Sinon pour moi l'avantage de mon code c'est que je peux pré-renseigner un mail puis l'ouvrir avec le logiciel de messagerie afin que l'utilisateur puisse faire des changements supplémentaires.

La copie invisible est toujours un moyen, mais dans ce cas autant utiliser les fonctions de mail de windev.
Tu as tout à fait raison et c'est pourquoi je trouvais ta contribution réellement intéressante.
La seule utilité du system.net.mail est d'avoir accès à plus d'options que les fonctions Windev (pour répondre API-COMTAT)
Ci dessous un exemple basic d'utilisation du .net pour un envoi simple (pour plus d'option, il faut aller voir la MSDN).

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
ClientSMTP est un objet SmtpClient dynamique
mailAuthentication est un NetworkCredential dynamique
oMailMessage est un MailMessage dynamique

PROCEDURE EmailInitialise(sServeur,nPort,sLogin,sPassword)
// Client SMTP
ClientSMTP = allouer un SmtpClient(sServeur,nPort)
// Objet authentification
mailAuthentication = allouer un NetworkCredential(sLogin, sPassword)
ClientSMTP.EnableSsl = Vrai
ClientSMTP.UseDefaultCredentials = Faux
ClientSMTP.Credentials = mailAuthentication

PROCEDURE EmailEnvoi(sExpediteur,sDestinataire,sObjet,Contenu)
// Contenu HTML ?
oMailMessage.IsBodyHtml = Faux
// Objet Email
oMailMessage = allouer un MailMessage(sExpediteur,sDestinataire,sObjet, Contenu)
// Envoi de l'email
ClientSMTP.Send(oMailMessage)
Pour l'accusé de réception, on peut ajouter cela (enfin je crois):
Code :
oMailMessage.Headers.Add("Disposition-Notification-To", sExpediteur)
wimbish est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 17h07.


 
 
 
 
Partenaires

Hébergement Web