ATOUTFOX
COMMUNAUTÉ FRANCOPHONE DES PROFESSIONNELS FOXPRO
Visual FoxPro : le développement durable

Comment ajouter une signature à un courriel avec CDO 1.X   



L'auteur

Mike Gagnon
Canada Canada
Membre Simple
# 0000000025
enregistré le 14/10/2004

Gagnon Mike
Pointe Cla H9R 3K8
de la société Carver Technologies Inc.
Fiche personnelle


Note des membres
pas de note

Contributions > 09 - Automation > Word

Comment ajouter une signature à un courriel avec CDO 1.X
# 0000000833
ajouté le 26/07/2012 19:32:44 et modifié le 26/07/2012
consulté 7897 fois
Niveau initié

Version(s) Foxpro :
VFP 9.0

Description

Voici comment ajouter la signature (version texte) du compte par defaut à un courriel en utilisant CDO 1.x (MSMAPI). Ceci fonctionne avec Outlook et Word.

Code source :
Local tcTo,tcBody,tcSubject,lcDefaultSignature
tcTo = 'me@somewhere.com'
tcSubject = 'Hello'
tcBody ='Hello test'
lcDefaultSignature = getdefaulttextsignature()
tcBody = tcBody +Chr(13)+Chr(10)+Chr(13)+Chr(10)+lcDefaultSignature
loSession = Createobject"MSMAPI.MAPISession" )
loSession.Signon()
If (loSession.SessionID > 0)
  loMessages = Createobject"MSMAPI.MAPIMessages" )
  loMessages.SessionID = loSession.SessionID
Endif
loMessages.Compose()
loMessages.RecipDisplayName = tcTo
loMessages.RecipType = 1
loMessages.MsgSubject = tcSubject
loMessages.MsgNoteText = tcBody
Try
  loMessages.Send()
Catch To loErrorSend

  tcReturn = [Error: ] + Str(loErrorSend.ErrorNo) + Chr(13) + ;
    [LineNo: ] + Str(loErrorSend.Lineno) + Chr(13) + ;
    [Message: ] + loErrorSend.Message + Chr(13) + ;
    [Procedure: ] + loErrorSend.Procedure + Chr(13) + ;
    [Details: ] + loErrorSend.Details + Chr(13) + ;
    [StackLevel: ] + Str(loErrorSend.StackLevel) + Chr(13) + ;
    [LineContents: ] + loErrorSend.LineContents

Endtry
loSession.Signoff()
* The folder name where signatures are stored depends on the Windows language version
* English
Procedure getdefaulttextsignature
lcFilePath = Getenv("APPDATA") + "\Microsoft\Signatures\"
* Spanish
*lcFilePath = GETENV("APPDATA") + "\Microsoft\Firmas\"

loWord = Createobject("Word.Application")
loEmOpt = loWord.EmailOptions
loOlSig = loEmOpt.EmailSignature
lcSigFileName = Alltrim(loOlSig.NewMessageSignature )
* Text signature
lcPathAndFile = lcFilePath + lcSigFileName + ".txt"
If File(lcPathAndFile )
  lcTextIn = Filetostr(lcPathAndFile  )

  If  Left( lcTextIn ,2) = 0hFFFE
* Remove Unicode header
    lcTextIn = Substr(lcTextIn,3)
  Endif

  lcFileContent = Strconv(lcTextIn ,6)
  loWord  =null
  Return  lcFileContent
Endif

Commentaires
le 30/07/2012, vh a écrit :
Merci Mike ! Tu es vraiment infatigable, t 'ayant posé la question lors de notre rencontre à Paris ...
Mais tu vois certainement venir la question: et sans Winword ?
Merci à nouveau pour la grande qualité de tes contributions et pour ta disponibilité, toujours avec gentillesse.
Vincent

le 30/07/2012, Mike Gagnon a écrit :
Si on parle de la signature qu'outlook utilise, je vois 2 solution possible (ou 3).
1. Utiliser Word comme montre ci-haut.
2. Ou de parser le fichier signature que se trouve dans le repertoire:
C:\Users\<user>\AppData\Roaming\Microsoft\Signatures\

Mais Word te permet de trouver la signature par defaut au cas ou il y en aurait plusieurs.



www.atoutfox.org - Site de la Communauté Francophone des Professionnels FoxPro - v3.4.0 - © 2004-2024.
Cette page est générée par un composant COM+ développé en Visual FoxPro 9.0-SP2-HF3