Message de rapport:
 

[Résolu] Envoie de mails

Sujet: [Résolu] Envoie de mails
par GoZeub sur 29/6/2004 16:52:34

Après avoir utilisé OLE Automation tout fonctionne même si l'affichage est un peu long.
Voici mes codes pour ceux que ça interresse et ceux qui souhaitent y apporter des améliorations

//***********************************************************
//							INITIALISATIONS
//***********************************************************


//Définition des variables
m_OutLook est un objet OLE dynamique	// Objet "OutLook.Application"
m_NameSpace est un objet OLE dynamique	// Objet NameSpace, "MAPI"
m_Folder est un objet OLE dynamique		// Objet Folder, dossier OutLook
m_Item est un objet OLE dynamique		// Objet Item
m_numItemCourant est un entier			// N° de l'item en cours
sUtilisateur est une chaîne				// Nom de l'utilisateur
nTypeItem est un entier					// Type d'item manipulé : Calendrier, Note, Tâche, ...

sID est une chaîne				// Identifiant automatique géré par OutLook
sSujet est une chaîne			// Sujet
sContenu est une chaîne			// Contenu du message
sDateReception est une chaîne   // Date de réception
sHeureReception est une chaîne  // Heure de réception
sExpediteur est une chaîne		// Expéditeur
sDest est une chaîne			// Destinataire	
sDestCopie est une chaîne		// Destinataire	en copie
sDestCopieC est une chaîne		// Destinataire	en copie cachée
NbPiecesJointes est un entier
Tab_PiecesJointes est un tableau dynamique

QUAND EXCEPTION
	Erreur(ExceptionInfo(errRésumé))
	FinProgramme()
FIN

// Initialisation du dialogue avec OutLook
m_OutLook=ObjetActif("OutLook.Application")
SI m_OutLook=Null ALORS m_OutLook=allouer un objet OLE "OutLook.Application"
SI m_OutLook=Null ALORS
	Erreur("L'accès à OutLook par OLE a échoué.","Vérifiez que la version complète d'OutLook (pas ""OutLook Express""), livrée avec le pack Office, est bien installée.")
	FinProgramme()
FIN
m_NameSpace=m_OutLook>>GetNameSpace("MAPI")
SI m_NameSpace=Null ALORS
	Erreur("Erreur lors de la connexion au ""NameSpace"" MAPI.")
	FinProgramme()
FIN
sUtilisateur=m_NameSpace>>CurrentUser>>Name

// Se positionne sur le dossier OutLook demandé
m_Folder = m_NameSpace>>GetDefaultFolder(6)



//***********************************************************
//							ENVOI DE MAIL
//***********************************************************


Rep_PiecesJointes est une chaîne
i,j sont des entiers=0
libérer Tab_PiecesJointes

// Crée l'item dans OutLook
m_Item = m_OutLook>>CreateItem(0)

// Sujet
m_Item>>Subject = sSujet
// Contenu
m_Item>>Body = sContenu
// Destinataires
m_Item>>To = sDest
m_Item>>cc = sDestCopie
m_Item>>bcc = sDestCopieC

// Pièces jointes
POUR i=1 A NbPiecesJointes
	// Attachement du fichier au message dans OutLook
	m_Item>>Attachments>>Add(Rep_PiecesJointes+"\"+Tab_PiecesJointes[i])	
FIN

// Vérification des adresses des destinataires
SI PAS m_Item>>Recipients>>ResolveAll() ALORS
	// Affichage d'OutLook pour résolution du pb
	m_Item>>Display()
SINON
	// Envoi
	m_Item>>Send()
FIN

m_Item=Null



//***********************************************************
//							RECEPTION DE MAIL
//***********************************************************

i,j sont des entiers
libérer Tab_PiecesJointes

// Chargement des données depuis OutLook
Tab_PiecesJointes= allouer un tableau de 0 par 0 chaînes

// Parcours des items et appel de la méthode d'affectation(propre au type d'élément lu)
POUR i=1 A m_Folder>>items>>count
	m_Item = m_Folder>>Items>>Item(i)
	// Identifiant automatique géré par OutLook
	sID = m_Item>>EntryID
	// Sujet
	sSujet = m_Item>>Subject
	// Contenu
	sContenu = m_Item>>Body
	Info(sSujet+TAB+sContenu)
	// Récupération de la date et de l'heure
	sDateHeure est un DateHeure
	sDateHeure = m_Item>>ReceivedTime
	sDateReception = sDateHeure..Date
	SI PAS DateValide(sDateReception) ALORS sDateReception=""
	// Heure de réception
	sHeureReception=NumériqueVersChaine(sDateHeure..Heure,"02d")+NumériqueVersChaine(sDateHeure..Minute,"02d")
	// Récupération des adresses eMails des destinataires pour réponse
	objReply est un objet OLE dynamique = m_Item>>Reply
	SI PAS objReply=Null ALORS
		sExpediteur = objReply>>Recipients(1)>>Address
		libérer objReply
	FIN
	
	// Destinataires (e-Mails) pour réponse à tous
	objReplyAll est un objet OLE dynamique = m_Item>>ReplyAll
	sDestCourant, sNomDest, sEMailDest sont des chaînes
	sDestCourant = Remplace(m_Item>>to,"'","")
	k est un entier
	POUR k=1 A objReplyAll>>Recipients>>Count
		sEMailDest=objReplyAll>>Recipients(k)>>Address
		sNomDest=objReplyAll>>Recipients(k)>>Name
		SI PAS sNomDest~=sUtilisateur ALORS	// Ignore l'utilisateur en cours
			SI PAS sEMailDest~=sDestCourant ALORS	// Ignore l'eMail de l'utilisateur en cours
				SI PAS sEMailDest~=sExpediteur ALORS		// Ignore l'expéditeur
					SI PAS sDest~="" ALORS sDest+="; "
					sDest+=sEMailDest
				FIN
			FIN
		FIN
	FIN
	libérer objReplyAll
	
	// Copie / Copie cachée
	sDestCopie = m_Item>>cc
	sDestCopieC = m_Item>>bcc
	
	// Pièces jointes
	NbPiecesJointes = m_Item>>Attachments>>count
	Dimension(Tab_PiecesJointes,m_Folder>>items>>count,NbPiecesJointes)
	POUR j=1 A NbPiecesJointes
		Tab_PiecesJointes[i,j] = m_Item>>Attachments(j)>>FileName
	FIN
FIN



Merci à tous ceux qui m'ont aidé sur ce sujet !!!

Connexion
Menu
Chercher WDForge
Chercher Web
Partenaires
Visualiser tous les Partenaires...
WinDev, WebDev, WinDev Mobile et HyperFile sont des marques déposées par PCSoft. |  Voter |  Legal |  Contact |   XOOPS 2.0.13.2