Consultor Eletrônico



Kbase 20066: How to Send Mail With Attachments on Windows.
Autor   Progress Software Corporation - Progress
Acesso   Público
Publicação   03/09/2008
Status: Verified

GOAL:

How to send mail using Microsoft Messaging Application Program Interface (MAPI)?

GOAL:

How to Send Mail With Attachments on Windows.

FACT(s) (Environment):

Windows
OpenEdge 10.x
Progress 8.x
Progress 9.x
Windows

FIX:

The code sample below solution demonstrates a method of sending mail with attachments using the Microsoft MAPI interface.

/* ******** Variable Definitions ************ */
DEFINE VARIABLE chSession AS COM-HANDLE NO-UNDO.
DEFINE VARIABLE chMessage AS COM-HANDLE NO-UNDO.
DEFINE VARIABLE chRecip AS COM-HANDLE NO-UNDO.
DEFINE VARIABLE chFiles AS COM-HANDLE NO-UNDO.
DEFINE VARIABLE iLoop AS INTEGER NO-UNDO.

/* ************* Send A Message ************* */
RUN SendMail
(
INPUT "",
INPUT 2,
INPUT "MAPI Test",
INPUT "This is a test.",
INPUT "address1@progress.com,address2@progress.com",
INPUT "C:\WRK91D\test.txt"
).
/* *************** Clean Up ***************** */
RUN ReleaseObjects.

/* ********** Internal Procedures ********* */
PROCEDURE SendMail:
/* Input parameters */
DEF INPUT PARAMETER cProfile AS CHAR NO-UNDO.
DEF INPUT PARAMETER iPriority AS INT NO-UNDO.
/* Low = 0; Normal = 1; High = 2 */
DEF INPUT PARAMETER cSubject AS CHAR NO-UNDO.
DEF INPUT PARAMETER cText AS CHAR NO-UNDO.
DEF INPUT PARAMETER cTo AS CHAR NO-UNDO.
DEF INPUT PARAMETER cFiles AS CHAR NO-UNDO.

/* Connection */
CREATE "MAPI.SESSION" chSession.
chSession:Logon(cProfile).

/* Message Creation */
ASSIGN
chMessage = chSession:OutBox:Messages:Add()
chMessage:Subject = cSubject
chMessage:Text = cText
chMessage:importance = iPriority.

/* Send To */
DO iLoop = 1 TO NUM-ENTRIES(cTo):
ASSIGN
chRecip = chMessage:Recipients:Add()
chRecip:Name = ENTRY(iLoop, cTo)
chRecip:Type = 1.
chRecip:Resolve.
END.

/* Attachments */
DO iLoop = 1 TO NUM-ENTRIES(cFiles):
ASSIGN
chMessage:Text = chMessage:Text + CHR(10)
chFiles = chMessage:Attachments:ADD()
chFiles:name = ENTRY(iLoop, cFiles)
chFiles:source = ENTRY(iLoop, cFiles).
END.

/* Send message */
chMessage:Update(TRUE, TRUE).
chMessage:Send(TRUE, FALSE).
chSession:Logoff.
END PROCEDURE.

P.ROCEDURE ReleaseObjects :
RELEASE OBJECT chRecip.
RELEASE OBJECT chMessage.
RELEASE OBJECT chSession.
RELEASE OBJECT chFiles.
END PROCEDURE..