Mappi

bebe57 Messages postés 5 Date d'inscription mardi 22 juillet 2003 Statut Membre Dernière intervention 9 septembre 2009 - 22 juil. 2003 à 10:22
bebe57 Messages postés 5 Date d'inscription mardi 22 juillet 2003 Statut Membre Dernière intervention 9 septembre 2009 - 23 juil. 2003 à 13:56
Bonjour,
j 'ai un probleme avec l'envoie de piece jointe.Voici mon code:

Code:
With msgMAPI
.SessionID = msgSession.SessionID
.Compose
'...'
.MsgSubject = sObject
If piece_jointe <> "" Then
'Ajoute une pièce jointe
.AttachmentIndex = 0
.AttachmentPathName = piece_jointe
.AttachmentPosition = CLng(Len(.MsgNoteText) - 1)
End If
Call .send(False)
End With
Call msgSession.SignOff
msgMAPI.SessionID = 0

l 'envoie de mail marche parfaitement bien mais après je ne peux plus modifier le dossier dans lequel se trouve le fichier (piece jointe).
Je ne peux pas renommer, ni déplacer, ni supprimer le dossier.

que faut-il faire pour résoudre ce probleme?

Merci

8-) BB 8-)

4 réponses

gigiou Messages postés 9 Date d'inscription vendredi 25 octobre 2002 Statut Membre Dernière intervention 7 avril 2006
22 juil. 2003 à 11:20
Salut,

Je pense que je vais pouvoir t'aider car j'ai déjà été confronté au même problème.

Voici le code de mes fonctions qui gère la connexion mapi et l'envoie de mails (avec une ou plusieurs pièces jointes).

Voici comment j'envoie un mail à plusieurs personnes et avec plusieurs pièces jointes:

Call sendMAIL(MapiSessionID, NomObjetMapiSession, "toto@titi.com;tata@toto.fr;toi@eux.net", "Sujet", "Texte", "C:\toto.txt;d:\tata\titi\toto.bat")

Et voici les fonctions qui gères tout ça (il y en a 2):

'Stockage de la session MAPI
Public MapiSessionID As Long

'Le contrôle MAPISession (interface de programmation d'application de messagerie)
'ouvre et établit une session MAPI.
'Il permet également de fermer une session MAPI.
Public Function MAPI(OpenClose As String, ObjectMapiSession As MAPISession) As Long
If UCase(OpenClose) = "OPEN" Then
'Nom du compte à utiliser
ObjectMapiSession.UserName = "TOTO"
'Password du compte à utiliser
ObjectMapiSession.Password = "XXXX"
'Connexion à la messagerie
ObjectMapiSession.DownLoadMail = True
ObjectMapiSession.SignOn
Else
'Deconnexion de la messagerie
If ObjectMapiSession.SessionID <> "0" Then ObjectMapiSession.SignOff
End If
MAPI = ObjectMapiSession.SessionID
End Function

Public Sub sendMAIL(MapiSessionID As Long, ObjectMapiMessage As MAPIMessages, SENDTO As String, SUBJECT As String, TEXT As String, PJ As String)
'Permet d'envoyer un mail.
'SENDTO -> un ou plusieurs destinataires séparés par des points virgules
'PJ -> une ou plusieurs pièces jointes (chemin complet du fichier) séparés par des points virgules
Dim TableauSENDTO, TableauPJ, TableauCopiePJ
TableauSENDTO = Split(SENDTO, ";")
TableauPJ = Split(PJ, ";")
ObjectMapiMessage.SessionID = MapiSessionID
ObjectMapiMessage.Compose
For i = 0 To UBound(TableauSENDTO)
ObjectMapiMessage.RecipDisplayName = TableauSENDTO(i)
ObjectMapiMessage.MsgSubject = SUBJECT
ObjectMapiMessage.MsgNoteText = TEXT
If PJ <> "" Then
For J = 0 To UBound(TableauPJ, 1)
'On envoie des copies des pièces jointes
'car les pièces jointes présente dans le tampon
'de composition de MapiMessage sont lockées.
'Il est donc impossible de faire des opérations sur
'les pièces jointes originales et sur sur les répertoires
'les contenant sans cette manipulation.
Dim pos As String
ReDim TableauCopiePJ(UBound(TableauPJ))
pos = Len(TableauPJ(J))
While Mid(TableauPJ(J), pos, 1) <> ""
pos = pos - 1
Wend
TableauCopiePJ(J) = GetTemporyFolderPath & Mid(TableauPJ(J), pos + 1, Len(TableauPJ(J)) - pos + 1)
Set OBJ1 = CreateObject("Scripting.FileSystemObject")
OBJ1.CopyFile TableauPJ(J), TableauCopiePJ(J)

ObjectMapiMessage.AttachmentIndex = J
ObjectMapiMessage.AttachmentPosition = J
ObjectMapiMessage.AttachmentPathName = TableauCopiePJ(J)
Next
End If
ObjectMapiMessage.Send
ObjectMapiMessage.Compose
Next
'Destruction des copies des pièces jointes.
If PJ <> "" Then
For J = 0 To UBound(TableauCopiePJ)
OBJ1.DeleteFile TableauCopiePJ(J)
Next
End If
End Sub

Voilà j'espère que cela aura pu t'aider, fait moi signe si tout est Ok où même dans le cas contraire si je peux à nouveaux te donner un coup de main.

@+Votre texte ICI
0
bebe57 Messages postés 5 Date d'inscription mardi 22 juillet 2003 Statut Membre Dernière intervention 9 septembre 2009
22 juil. 2003 à 17:11
Merci de ton aide.
J'essai de comprendre où tu copies ton fichier mais qu'est-ce que c'est :
GetTemporyFolderPath
?

8-) BB 8-)
0
gigiou Messages postés 9 Date d'inscription vendredi 25 octobre 2002 Statut Membre Dernière intervention 7 avril 2006
23 juil. 2003 à 10:35
Voici ce qu'est GetTemporyFolderPath.

Private Declare Function GetTempPath Lib "kernel32" Alias "GetTempPathA" (ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long

Const MAX_PATH = 260

Function GetTemporyFolderPath() As String
'Permet de retrouver le dossier temporaire de Windows .
Dim sBuffer As String
Dim RV As Long

sBuffer = String(MAX_PATH, Chr(0))
RV = GetTempPath(MAX_PATH, sBuffer)
GetTemporyFolderPath = Left(sBuffer, RV)
End Function

@+ >:)
0
bebe57 Messages postés 5 Date d'inscription mardi 22 juillet 2003 Statut Membre Dernière intervention 9 septembre 2009
23 juil. 2003 à 13:56
je suis désolée :blush) , je sais j'ai posé trop vite une question dont j'ai trouvé la réponse juste après.

En tout cas merci pour tout, ça marche super bien.
:big)

8-) BB 8-)
0
Rejoignez-nous