Page 1 sur 2
Envoyer une piece jointe par mail

Publié:
02 Nov 2010 à 16:51
par clementbp
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

Publié:
02 Nov 2010 à 16:56
par Michael DELIQUE
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.

Publié:
02 Nov 2010 à 17:08
par clementbp
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

Publié:
02 Nov 2010 à 17:23
par Michael DELIQUE
re,
tout dépend comment tes envois de fax sont géré et si les envois de fax supporte les pieces-jointe

Publié:
02 Nov 2010 à 17:31
par clementbp
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.

Publié:
02 Nov 2010 à 21:18
par Michael DELIQUE
oui, mais a mon avis ça sera plus simple a faire en lotus script

Publié:
02 Nov 2010 à 21:45
par roubech
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

Publié:
03 Nov 2010 à 10:03
par clementbp
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

Publié:
03 Nov 2010 à 10:20
par Michael DELIQUE
salut
regarde l'aide en ligne à NotesRichTextItem.CopyItemToDocument
pour copier le champ, parceque là tu ne copie que le texte

Publié:
03 Nov 2010 à 11:56
par clementbp
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

Publié:
03 Nov 2010 à 11:58
par Michael DELIQUE
re,
désolé mais je comprend pas ce qui ne marche pas !

Publié:
03 Nov 2010 à 12:08
par clementbp
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

Publié:
03 Nov 2010 à 12:33
par Michael DELIQUE
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

Publié:
03 Nov 2010 à 14:33
par clementbp
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

Publié:
03 Nov 2010 à 14:37
par Michael DELIQUE
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