Hola Paisano, esto es lo que yo uso, puedes copiar este codigo en un PRG
o puedes crear un objeto o "class" con los metodos descritos en el codigo
y copiarlos, buena suerte,
DEFINE CLASS MsOutLook AS CUSTOM
PROCEDURE INIT
THIS.oOutLookReference = CREATEOBJECT("OutLook.Application")
LOCAL loOutLook
loOutLook = THIS.oOutLookReference
THIS.oNameSpace = loOutLook.GetNameSpace("MAPI")
THIS.DoDefine()
ENDPROC
PROCEDURE AddAppointment
LPARAMETERS tcBody,;
tdStart,;
tdEnd,;
tcSubject,;
tcLocation,;
tcCateGories,;
tlAllDayevent
LOCAL loAppointment,;
loOutLookReference
#DEFINE olAppointmentItem 1
#DEFINE olBusy 2
IF TYPE('THIS.oOutLookReference') <> 'O'
MESSAGEBOX("Could not instatiate a reference to outlook")
RETURN -1
ENDIF
loOutLookReference = THIS.oOutLookReference
loAppointment = loOutLookReference.CreateItem(olAppointmentItem)
IF VARTYPE(tlAlldayEvent) <> 'L'
tlAllDayEvent = .F.
ENDIF
IF VARTYPE(tcBody) <>'C'
tcBody = ''
RETURN -1
ENDIF
IF !INLIST(VARTYPE(tdStart),'D','T')
MESSAGEBOX("Start date/time can't be empty")
RETURN -2
ENDIF
IF !INLIST(VARTYPE(tdEnd),'D','T')
MESSAGEBOX("End date/time can't be empty")
RETURN -2
ENDIF
IF VARTYPE(tcLocation) <> "C"
tcLocation = ''
ENDIF
IF VARTYPE(tcCategories) <> 'C'
tcCategories = ''
ENDIF
WITH loAppointment
.AllDayEvent = IIF(tlAllDayEvent,1,0)
.Body = tcBody
.START = tdStart
.END = tdEnd
.Subject = tcSubject
.Location = tcLocation
.BusyStatus = olBusy
.Categories = IIF(!EMPTY (tcCategories),tcCategories,.Categories)
.ReminderMinutesBeforeStart = 5
.SAVE
ENDWITH
ENDPROC
PROCEDURE AddContact
LPARAMETERS tcBody,;
tdStart,;
tdEnd,;
tcSubject,;
tcLocation,;
tcCateGories,;
tlAllDayevent
LOCAL loAppointment,;
loOutLookReference
#DEFINE olAppointmentItem 1
#DEFINE olBusy 2
IF TYPE('THIS.oOutLookReference') <> 'O'
MESSAGEBOX("Could not instatiate a reference to outlook")
RETURN -1
ENDIF
loOutLookReference = THIS.oOutLookReference
loAppointment = loOutLookReference.CreateItem(olAppointmentItem)
IF VARTYPE(tlAlldayEvent) <> 'L'
tlAllDayEvent = .F.
ENDIF
IF VARTYPE(tcBody) <>'C'
tcBody = ''
RETURN -1
ENDIF
IF !INLIST(VARTYPE(tdStart),'D','T')
MESSAGEBOX("Start date/time can't be empty")
RETURN -2
ENDIF
IF !INLIST(VARTYPE(tdEnd),'D','T')
MESSAGEBOX("End date/time can't be empty")
RETURN -2
ENDIF
IF VARTYPE(tcLocation) <> "C"
tcLocation = ''
ENDIF
IF VARTYPE(tcCategories) <> 'C'
tcCategories = ''
ENDIF
WITH loAppointment
.AllDayEvent = IIF(tlAllDayEvent,1,0)
.Body = tcBody
.START = tdStart
.END = tdEnd
.Subject = tcSubject
.Location = tcLocation
.BusyStatus = olBusy
.Categories = IIF(!EMPTY(tcCategories),tcCategories,.Categories)
.ReminderMinutesBeforeStart = 5
.SAVE
ENDWITH
ENDPROC
PROCEDURE AddJournal
LPARAMETERS tcBody,;
tdStart,;
tdEnd,;
tcSubject,;
tcLocation,;
tcCateGories,;
tlAllDayevent
LOCAL loAppointment,;
loOutLookReference
#DEFINE olAppointmentItem 1
#DEFINE olBusy 2
IF TYPE('THIS.oOutLookReference') <> 'O'
MESSAGEBOX("Could not instatiate a reference to outlook")
RETURN -1
ENDIF
loOutLookReference = THIS.oOutLookReference
loAppointment = loOutLookReference.CreateItem(olAppointmentItem)
IF VARTYPE(tlAlldayEvent) <> 'L'
tlAllDayEvent = .F.
ENDIF
IF VARTYPE(tcBody) <>'C'
tcBody = ''
RETURN -1
ENDIF
IF !INLIST(VARTYPE(tdStart),'D','T')
MESSAGEBOX("Start date/time can't be empty")
RETURN -2
ENDIF
IF !INLIST(VARTYPE(tdEnd),'D','T')
MESSAGEBOX("End date/time can't be empty")
RETURN -2
ENDIF
IF VARTYPE(tcLocation) <> "C"
tcLocation = ''
ENDIF
IF VARTYPE(tcCategories) <> 'C'
tcCategories = ''
ENDIF
WITH loAppointment
.AllDayEvent = IIF(tlAllDayEvent,1,0)
.Body = tcBody
.START = tdStart
.END = tdEnd
.Subject = tcSubject
.Location = tcLocation
.BusyStatus = olBusy
.Categories = IIF(!EMPTY(tcCategories),tcCategories,.Categories)
.ReminderMinutesBeforeStart = 5
.SAVE
ENDWITH
ENDPROC
PROCEDURE AddNote
LPARAMETERS tcBody
#DEFINE olNoteItem 5
LOCAL loNote,;
loOutLookReference,;
llRtnVal
loOutLookReference = THIS.oOutLookReference
IF VARTYPE(tcBody) <> 'C'
RETURN -1
ENDIF
loNote = loOutLookReference.CreateItem(olNoteItem)
loNote.Body = tcBody
loNote.SAVE
RETURN 0
ENDPROC
PROCEDURE AddTask
LPARAMETERS tcBody,;
tdStart,;
tdDue,;
tcSubject
LOCAL loTask,;
loOutLookReference
#DEFINE olTaskItem 3
IF TYPE('THIS.oOutLookReference') <> 'O'
MESSAGEBOX("Could not instatiate a reference to outlook")
RETURN -1
ENDIF
loOutLookReference = THIS.oOutLookReference
loTask = loOutLookReference.CreateItem(olTaskItem)
IF VARTYPE(tcBody) <>'C'
tcBody = ''
RETURN -1
ENDIF
IF !INLIST(VARTYPE(tdStart),'D','T')
MESSAGEBOX("Start date/time can't be empty")
RETURN -2
ENDIF
IF !INLIST(VARTYPE(tdDue),'D','T')
MESSAGEBOX("End date/time can't be empty")
RETURN -2
ENDIF
WITH loTask
.Body = tcBody
.StartDate = tdStart
.DueDate = tdDue
.Subject = tcSubject
.SAVE
ENDWITH
ENDPROC
PROCEDURE CreateItem
LPARAMETER tnItemCode
LOCAL loOutlookRefence
loOutLookReference = THIS.oOutLookReference
IF TYPE('tnItemCode') <> 'N'
RETURN -1
ENDIF
RETURN loOutLookReference.CreateItem(tnItemCode)
ENDPROC
PROCEDURE DoDefine
*/ Item Constants
#DEFINE olMailItem 0
#DEFINE olAppointmentItem 1
#DEFINE olContactItem 2
#DEFINE olTaskItem 3
#DEFINE olJournalItem 4
#DEFINE olNoteItem 5
#DEFINE olPostItem 6
*/ Folder Constants
#DEFINE olFolderCalendar 9
#DEFINE olFolderContacts 10
#DEFINE olFolderDeletedItems 3
#DEFINE olFolderInBox 6
#DEFINE olFolderJournal 11
#DEFINE olFolderNotes 12
#DEFINE olFolderOutBox 4
#DEFINE olFolderSentMail 5
#DEFINE olFolderTask 13
#DEFINE olBusy 2
#DEFINE True .T.
#DEFINE False .F.
#DEFINE olPrivate 2
*/ Importance Constants
#DEFINE olImportanceLow 0
#DEFINE olImportanceNormal 1
#DEFINE olImportanceHigh 2
ENDPROC
PROCEDURE SendMail
LPARAMETER tcReceiver,tcMessage,tcSubject,tcCarbonCopy,tlCertified
#DEFINE olMailItem 0
#DEFINE olImportanceHigh 2
LOCAL loEmailItem,;
loOutLookReference
IF TYPE('THIS.oOutLookReference') <> 'O'
MESSAGEBOX("Could not instatiate a reference to outlook")
RETURN -1
ENDIF
loOutLookReference = THIS.oOutLookReference
loEmailItem = loOutLookReference.CreateItem(olMailItem) && See definition on init event
IF ISNULL('tcSubject') OR EMPTY(tcSubject)
tcSubject = "No Subject"
ENDIF
IF ISNULL('tcReceiver') OR EMPTY('tcReceiver')
= MESSAGEBOX("No receiver")
RETURN -1
ENDIF
IF ISNULL(tcCarboncopy) OR EMPTY(tcCarbonCopy)
tcCarboncopy = ''
ENDIF
IF ISNULL(tcMessage) OR EMPTY(tcMessage)
tcMessage =''
ENDIF
IF ISNULL(tlCertified) OR TYPE('tlCertified') <> 'L'
tlCertified = .F.
ENDIF
WITH loEmailItem
.Body = tcMessage
.TO = tcReceiver
.Subject = tcSubject
.ReadReceiptRequested = IIF(tlCertified,1,0)
.Importance = olImportanceHigh
IF NOT EMPTY(tcCarbonCopy)
.cc = tcCarbonCopy
ENDIF
.SEND()
ENDWITH
RETURN 0
ENDPROC
ENDDEFINE
>por favor necesito ayuda con los controles para enviar correo cuando trato de enviarlo me da un error en esta linea .ole.send()
Luis Guzman, MCP
"The only glory most of us have to hope for
is the glory of being normal." Katherine Fulleton Gerould