Envoyer une piece jointe par mail

Forum destiné aux questions sur le développement : Formules, LotusScript, Java ...

Messagepar clementbp » 03 Nov 2010 à 14:43

Ce n'est pas un bouton qui est dans une vue mais il est directement dans le masque.
clementbp
Posteur habitué
Posteur habitué
 
Message(s) : 236
Inscrit(e) le : 03 Fév 2010 à 16:42

Messagepar Michael DELIQUE » 03 Nov 2010 à 14:51

ahhhh... ok !

alors remplace le code par

dim uiwork as New Notesuiworkspace
set doc = uiwork.currentDocument.document

si tu n'as pas un objet Notesuidocument d'instancié et d'accessible

le code que tu as utilisé sert pour la sélection dans une vue
Cordialement

Michael (SMS-Phobique)
----------------------------
"La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi."
Albert EINSTEIN
Avatar de l’utilisateur
Michael DELIQUE
Administrateur
Administrateur
 
Message(s) : 12183
Inscrit(e) le : 16 Déc 2004 à 10:36
Localisation : Paris/Cergy

Messagepar clementbp » 03 Nov 2010 à 15:07

Merci cette fois je recois bien le mail c'est super

Par contre pour le cas des pièces jointes je ne comprend toujours pas comment je dois faire.

j'ai deux solutions, soit je fais un champs texte riche qui s'appel CorpsTexte dans lequel je peut joindre des fichiers (je l'ai fais et j'ai un message d'erreur), ou alors je mets toutes mes pieces jointes dans un champs de type texte riche amélioré.

Comment faire :

Pour info le code a mettre dans le bouton du masque est :
Sub Click(Source As Button)

On Error Goto ErreurHandle

Dim session As NotesSession
Dim db As NotesDatabase
Dim dc As NotesDocumentCollection
Dim doc As NotesDocument
Dim rtItem As NotesRichTextItem
Dim uiwork As New Notesuiworkspace
Set session = New NotesSession
Set db = session.CurrentDatabase
Set doc = uiwork.currentDocument.document

If doc Is Nothing Then
Error 9999,"doc is Nothing"
Elseif doc.HasItem("CorpsTexte") = False Then
Error 9999, "No field : CorpsTexte"
End If

Dim nbCopy As Boolean

nbCopy = False

Dim memo As NotesDocument
Set memo = New NotesDocument( db )
If nbCopy = False Then
'si pas de Piece jointe
Call memo.ReplaceItemValue( "Body", doc.GetItemValue( "CorpsTexte" ))
Else
'si piece jointe
Set rtItem = doc.GetFirstItem("CorpsTexte")
If Not rtItem Is Nothing Then
Call rtItem.CopyItemToDocument(memo,"Body")
End If
End If
Call memo.ReplaceItemValue( "Subject", "Objet du mail" )
Call memo.ReplaceItemValue( "Form", "Memo" )
Call memo.Send( False, "clement@aaaa.fr" )

Exit Sub
ErreurHandle:
Msgbox "("+Cstr(Getthreadinfo (1))+" Call by "+Cstr(Getthreadinfo(10))+")"+Chr(10)+"Erreur " + Str(Err) + " : "+Chr(10) + Cstr(Error)+". "+Chr(10)+"Ligne N° "+Cstr(Erl),16," ERREUR !"
Exit Sub
End Sub
clementbp
Posteur habitué
Posteur habitué
 
Message(s) : 236
Inscrit(e) le : 03 Fév 2010 à 16:42

Messagepar Michael DELIQUE » 03 Nov 2010 à 15:10

re,

aucune raison de passé par un texte rich amélioré.

la premiere solution est la bonne passe ton champ "CorpsText" en richtext et dans le code que je t'ai envoyé passe nbCopy à true
Cordialement

Michael (SMS-Phobique)
----------------------------
"La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi."
Albert EINSTEIN
Avatar de l’utilisateur
Michael DELIQUE
Administrateur
Administrateur
 
Message(s) : 12183
Inscrit(e) le : 16 Déc 2004 à 10:36
Localisation : Paris/Cergy

Messagepar clementbp » 03 Nov 2010 à 15:26

J'ai essayé ce que tu m'as dis par contre j'ai toujours un message d'erreur.

Le code est :
Sub Click(Source As Button)

On Error Goto ErreurHandle

Dim session As NotesSession
Dim db As NotesDatabase
Dim dc As NotesDocumentCollection
Dim doc As NotesDocument
Dim rtItem As NotesRichTextItem
Dim uiwork As New Notesuiworkspace
Set session = New NotesSession
Set db = session.CurrentDatabase
Set doc = uiwork.currentDocument.document

If doc Is Nothing Then
Error 9999,"doc is Nothing"
Elseif doc.HasItem("CorpsTexte") = False Then
Error 9999, "No field : CorpsTexte"
End If

Dim nbCopy As Boolean

nbCopy = True

Dim memo As NotesDocument
Set memo = New NotesDocument( db )
If nbCopy = False Then
'si pas de Piece jointe
Call memo.ReplaceItemValue( "Body", doc.GetItemValue( "CorpsTexte" ))
Else
'si piece jointe
Set rtItem = doc.GetFirstItem("CorpsTexte")
If Not rtItem Is Nothing Then
Call rtItem.CopyItemToDocument(memo,"Body")
End If
End If
Call memo.ReplaceItemValue( "Subject", "Objet du mail" )
Call memo.ReplaceItemValue( "Form", "Memo" )
Call memo.Send( False, "clement.pequignet@jurafiltration.fr" )

Exit Sub
ErreurHandle:
Msgbox "("+Cstr(Getthreadinfo (1))+" Call by "+Cstr(Getthreadinfo(10))+")"+Chr(10)+"Erreur " + Str(Err) + " : "+Chr(10) + Cstr(Error)+". "+Chr(10)+"Ligne N° "+Cstr(Erl),16," ERREUR !"
Exit Sub
End Sub
clementbp
Posteur habitué
Posteur habitué
 
Message(s) : 236
Inscrit(e) le : 03 Fév 2010 à 16:42

Messagepar Michael DELIQUE » 03 Nov 2010 à 15:27

quel message d'erreur ?

tu as regardé en débug ce qui ne vas pas ?
Cordialement

Michael (SMS-Phobique)
----------------------------
"La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi."
Albert EINSTEIN
Avatar de l’utilisateur
Michael DELIQUE
Administrateur
Administrateur
 
Message(s) : 12183
Inscrit(e) le : 16 Déc 2004 à 10:36
Localisation : Paris/Cergy

Messagepar clementbp » 03 Nov 2010 à 15:36

Le message est le suivant.

Ca se situe à ce niveau là du code
Elseif doc.HasItem("CorpsTexte") = False Then
Error 9999, "No field : CorpsTexte"
End If
clementbp
Posteur habitué
Posteur habitué
 
Message(s) : 236
Inscrit(e) le : 03 Fév 2010 à 16:42

Messagepar Michael DELIQUE » 03 Nov 2010 à 15:40

tu as bien un champ CorpsText ?

essais d'enregistrer ton doc avec le traitement
Cordialement

Michael (SMS-Phobique)
----------------------------
"La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi."
Albert EINSTEIN
Avatar de l’utilisateur
Michael DELIQUE
Administrateur
Administrateur
 
Message(s) : 12183
Inscrit(e) le : 16 Déc 2004 à 10:36
Localisation : Paris/Cergy

Messagepar clementbp » 03 Nov 2010 à 15:47

Oui c'etait tout simplement ça.

Il fallait que le document soit enregistré avant que l'agent s'exécute.

C'est parfait maintenant tout fonctionne à merveille.

Merci beaucoup tu m'as encore une fois bien dépanné.

Merci et bonne journée
clementbp
Posteur habitué
Posteur habitué
 
Message(s) : 236
Inscrit(e) le : 03 Fév 2010 à 16:42

Messagepar clementbp » 03 Nov 2010 à 16:30

Bon je suis vraiment trop nul mais si je veux enregistrer le document au début de mon code comment je peut faire

Je pensais mettre un "Call doc.save"
J'ai vu qu'il y avait des argument entre parenthèse mais à quoi servent ils ?
clementbp
Posteur habitué
Posteur habitué
 
Message(s) : 236
Inscrit(e) le : 03 Fév 2010 à 16:42

Messagepar Michael DELIQUE » 03 Nov 2010 à 16:33

essais ça

Code : Tout sélectionner
dim UIDoc as NotesUIdocument
set UIdoc = uiwork.currentDocument
call Uidoc.save
Set doc = UIdoc.document
Cordialement

Michael (SMS-Phobique)
----------------------------
"La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi."
Albert EINSTEIN
Avatar de l’utilisateur
Michael DELIQUE
Administrateur
Administrateur
 
Message(s) : 12183
Inscrit(e) le : 16 Déc 2004 à 10:36
Localisation : Paris/Cergy

Précédent

Retour vers Développement