Envoyer une piece jointe par mail

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

Envoyer une piece jointe par mail

Messagepar clementbp » 02 Nov 2010 à 16:51

Bonjour,

J'ai fais une petite base toute simple qui va me permettre d'envoyer des mails sans passer par la base de courrier classique de Lotus.

J'ai donc fait un masque tout simple dans lequel j'ai la possibilité de rattacher des fichiers au message.

Mon problème est que je ne sais pas comment faire pour transférer les pieces jointes dans le mail.

Pour le moment j'ai utilisé la fonction simple @mailsend et j'ai vu le parametre "bodyfield" mais je ne comprend pas comment cela fonctionne.

@MailSend(EnvoyerA;"";"";Objet;CorpsTexte; -bodyfield- )

Si quelqu'un peut m'aider.

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

Messagepar Michael DELIQUE » 02 Nov 2010 à 16:56

salut

ça fait un moment que j'ai pas utilisé cette @formule. mais si je me souvient bien, tu ne peut pas insérer de piece jointe, juste un doclink sur le document courant.

maintenant si tu appel ton masque "memo" t peut l'envoyer comme n'importe quelle mail.
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 » 02 Nov 2010 à 17:08

Il faudrait donc que j'utilise une autre formule.

Mon soucis que je voudrais avoir un masque pour envoyer des mail qui s'appel Memo et un masque pour envoyer des fax via le mail également.

Je ne peut donc pas les appeler pareil.

Comment me conseillez vous de faire
clementbp
Posteur habitué
Posteur habitué
 
Message(s) : 236
Inscrit(e) le : 03 Fév 2010 à 16:42

Messagepar Michael DELIQUE » 02 Nov 2010 à 17:23

re,

tout dépend comment tes envois de fax sont géré et si les envois de fax supporte les pieces-jointe
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 » 02 Nov 2010 à 17:31

En faite j'ai la possibilité d'envoyer des fax depuis la boite mail de lotus en ajoutant dans le destinataire N°Fax@xxx.fax

Donc la pas de soucis mes pieces jointes sont bien rattachées sans problème au fax.

J'ai développé moi un masque spécifique avec des champs supplémentaires qui ne sont pas dans le masque memo et qui me permettrait d'envoyer mes fax.

Mais c'est la ou je tombe sur mon problème de pièces jointe.

Je ne vois pas comment le résoudre pourtant il devrait etre possible de dire que quand il m'envoye le mail il m'envoie aussi les pieces qui sont dans un champs spécifique du masque.
clementbp
Posteur habitué
Posteur habitué
 
Message(s) : 236
Inscrit(e) le : 03 Fév 2010 à 16:42

Messagepar Michael DELIQUE » 02 Nov 2010 à 21:18

oui, mais a mon avis ça sera plus simple a faire en lotus script
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 roubech » 02 Nov 2010 à 21:45

en LotusScipt, tu peux par exemple générer ton mail en renseignant les champs classiques SendTo, Subject .. en reprenant des données de ton masque et pour le champ Body, mettre l'ensenble du doc à l'aide d'un NotesDocument.RenderToRTitem, ce qui inclus les PJ

PS : c'est uin peu le prinicpe du forward, d'ailleurs, tu peux aussi essayer un forward
Avatar de l’utilisateur
roubech
Modérateur
Modérateur
 
Message(s) : 4976
Inscrit(e) le : 01 Fév 2007 à 20:22
Localisation : Lille

Messagepar clementbp » 03 Nov 2010 à 10:03

Bonjour,

Bon je suis donc passé en lotus script. Par contre j'arrive sur le meme problème je ne sais pas comment envoyer les pieces jointes par mail.

je vous joint le code que j'ai :
Sub Click(Source As Button)

Dim Session As NotesSession
Dim DB As NotesDatabase
Dim Doc As Notesdocument

Dim ws As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Set uidoc = ws.CurrentDocument

Dim VarDestinataire As Variant
Dim VarObjet As Variant
Dim VarCorpsTexte As Variant


VarDestinataire = uidoc.fieldGetText( "EnvoyerA" )
VarObjet = uidoc.fieldGetText( "Objet" )
VarCorpsTexte = uidoc.fieldGetText( "CorpsTexte" )


Set Session = New NotesSession
Set DB = Session.currentdatabase
Set Doc = DB.CreateDocument
Doc.form = "memo"
Doc.SendTo = VarDestinataire
Doc.Subject = VarObjet
Doc.Body = VarCorpsTexte
Call Doc.send(False,session.username)


Call uidoc.Close

End Sub




Dans mon masque j'ai un champ "CorpsTexte" qui est un champ texte tout simple et un champ "PiecesJointes" qui est un champ texte riche amélioré.

Donc voila la je bloque que dois-je faire ?

Merci de votre aide
clementbp
Posteur habitué
Posteur habitué
 
Message(s) : 236
Inscrit(e) le : 03 Fév 2010 à 16:42

Messagepar Michael DELIQUE » 03 Nov 2010 à 10:20

salut

regarde l'aide en ligne à NotesRichTextItem.CopyItemToDocument

pour copier le champ, parceque là tu ne copie que le texte
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 à 11:56

Bon je ne comprend pas ou est mon erreur.

Si quelqu'un peut me guider

Sub Click(Source As Button)


Dim session As NotesSession
Dim db As NotesDatabase
Dim dc As NotesDocumentCollection
Dim doc As NotesDocument
Set session = New NotesSession
Set db = session.CurrentDatabase
Set dc = db.UnprocessedDocuments
Set doc = dc.GetFirstDocument


Dim memo As NotesDocument
Set memo = New NotesDocument( db )
Dim bodytext As Variant
bodytext = doc.GetItemValue( "CorpsTexte" )
'bodytext = "test" 'si j'active cette ligne en desactivant les deux lignes du dessus ça marche
Call memo.ReplaceItemValue( "Body", bodytext )
Call memo.ReplaceItemValue( "Subject", "Objet du mail" )
Call memo.ReplaceItemValue( "Form", "Memo" )
Call memo.Send( False, "clement@aaa.fr" )



End Sub


J'ai dans mon masque le champs CorpsTexte dont je veux récupérer la valeur


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

Messagepar Michael DELIQUE » 03 Nov 2010 à 11:58

re,

désolé mais je comprend pas ce qui ne marche 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 à 12:08

Voila j'ai ce message là qui apparait et je ne comprend pas pourquoi.

D'après ce que je crois comprendre, le bodytext nerécupere pas la valeur de mon champs CorpsTexte
clementbp
Posteur habitué
Posteur habitué
 
Message(s) : 236
Inscrit(e) le : 03 Fév 2010 à 16:42

Messagepar Michael DELIQUE » 03 Nov 2010 à 12:33

une version corrigé/explicative


Code : Tout sélectionner
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
   Set session = New NotesSession
   Set db = session.CurrentDatabase
   Set dc = db.UnprocessedDocuments
   Set doc = dc.GetFirstDocument
   
   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@aaa.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
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 à 14:33

Le code que tu m'a donné ne fonctionne pas dans mon cas.
Je t'envoie le message de qui apparait à l'écran au cas ou tu connaisse la raison du problème
clementbp
Posteur habitué
Posteur habitué
 
Message(s) : 236
Inscrit(e) le : 03 Fév 2010 à 16:42

Messagepar Michael DELIQUE » 03 Nov 2010 à 14:37

oui c'est bien ce que je pensais.

tu as mis ton code dans un bouton dans une vue !

alors soit tu passe par un agent qui traite les documents sélectionné (et tu modifie pas ton code)

soit tu remplace Set dc = db.UnprocessedDocuments
dim uiwork as New Notesuiworkspace
par set dc = uiwork.currentview.Documents
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

Suivant

Retour vers Développement