SendMailViaOutlook.p 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. /* Input parameters */
  2. DEF INPUT PARAMETER cProfile AS CHAR NO-UNDO.
  3. DEF INPUT PARAMETER iPriority AS INT NO-UNDO.
  4. /* Low = 0; Normal = 1; High = 2 */
  5. DEF INPUT PARAMETER cSubject AS CHAR NO-UNDO.
  6. DEF INPUT PARAMETER cText AS CHAR NO-UNDO.
  7. DEF INPUT PARAMETER cTo AS CHAR NO-UNDO.
  8. DEF INPUT PARAMETER cFiles AS CHAR NO-UNDO.
  9. /* Variables */
  10. DEF VAR chSession AS COM-HANDLE NO-UNDO.
  11. DEF VAR chMessage AS COM-HANDLE NO-UNDO.
  12. DEF VAR chRecip AS COM-HANDLE NO-UNDO.
  13. DEF VAR chFiles AS COM-HANDLE NO-UNDO.
  14. DEF VAR iLoop AS INT NO-UNDO.
  15. DEF VAR fConnect AS LOG NO-UNDO.
  16. /* Connection */
  17. fConnect = FALSE.
  18. CREATE "MAPI.SESSION" chSession CONNECT NO-ERROR.
  19. IF VALID-HANDLE(chSession) THEN fConnect = TRUE.
  20. ELSE DO:
  21. CREATE "MAPI.SESSION" chSession NO-ERROR.
  22. IF NOT VALID-HANDLE(chSession) THEN DO:
  23. MESSAGE 'Kein Outlook installiert' VIEW-AS ALERT-BOX INFORMATION.
  24. RETURN NO-APPLY.
  25. END.
  26. END.
  27. chSession:Logon(cProfile).
  28. /* Message Creation */
  29. ASSIGN
  30. chMessage = chSession:OutBox:Messages:Add()
  31. chMessage:Subject = cSubject
  32. chMessage:Text = cText
  33. chMessage:importance = iPriority.
  34. /* Send To */
  35. DO iLoop = 1 TO NUM-ENTRIES(cTo):
  36. ASSIGN
  37. chRecip = chMessage:Recipients:Add()
  38. chRecip:Name = ENTRY(iLoop, cTo)
  39. chRecip:Type = 1.
  40. chRecip:Resolve.
  41. END.
  42. /* Attachments */
  43. DO iLoop = 1 TO NUM-ENTRIES(cFiles):
  44. ASSIGN
  45. chMessage:Text = chMessage:Text + CHR(10)
  46. chFiles = chMessage:Attachments:ADD()
  47. chFiles:name = ENTRY(iLoop, cFiles)
  48. chFiles:source = ENTRY(iLoop, cFiles).
  49. END.
  50. /* Send message */
  51. chMessage:Update(TRUE, TRUE).
  52. IF VALID-HANDLE(chMessage) THEN chMessage:Send(TRUE, TRUE).
  53. chSession:Logoff.
  54. /* Release Objects */
  55. RUN ReleaseObjects.
  56. /* ---------------------------------------------------------------- */
  57. PROCEDURE ReleaseObjects :
  58. RELEASE OBJECT chRecip NO-ERROR.
  59. RELEASE OBJECT chFiles NO-ERROR.
  60. IF VALID-HANDLE(chMessage) THEN RELEASE OBJECT chMessage NO-ERROR.
  61. IF NOT fConnect THEN RELEASE OBJECT chSession NO-ERROR.
  62. END PROCEDURE.