[progress Communities] [progress Openedge Abl] Forum Post: Accessing Static Class And...

  • Thread starter Thread starter christian.bryan@capita.co
  • Start date Start date
Status
Not open for further replies.
C

christian.bryan@capita.co

Guest
HI I am trying to use .NET to send an email from Openedge. To add an attachment you can specify a content type and the content type is expecting a Mimetype which is a constant held in the static class Application System.Net.Mime.MediaTypeNames.Application https://msdn.microsoft.com/en-us/library/system.net.mime.mediatypenames.application(v=vs.110).aspx I can't work out how to get the values for these fields i.e. Octet, PDF, RTF etc. Code attached. Look for: >>>>>>>>> oContentType:MediaType = oMediaType:Application:Octet. /* HOW DO I PASS this VALUE??????????????????? */ 1 THEN cSep = ";". /* Proces each attachment */ DO i = 1 TO NUM-ENTRIES(pcFiles,cSep): oAttachment = NEW Attachment(ENTRY(i,pcFiles,cSep)). oMessage:Attachments:Add(oAttachment). DELETE OBJECT oAttachment NO-ERROR. END. END METHOD. /* AddEmailAttachment */ /* CJB01 */ METHOD PUBLIC VOID AddEmailAttachment (INPUT pcFiles AS CHARACTER, INPUT pcFileNames AS CHARACTER): DEFINE VARIABLE i AS INTEGER NO-UNDO. DEFINE VARIABLE cSep AS CHARACTER NO-UNDO INITIAL ",". DEFINE VARIABLE oAttachment AS Attachment NO-UNDO. DEFINE VARIABLE oContentType AS ContentType. DEFINE VARIABLE oMediaType AS MediaTypeNames /* */. DEFINE VARIABLE oApplication AS CLASS oMediaType.Application. /* Could be semi-colon separated */ IF NUM-ENTRIES(pcFiles,";") > 1 THEN cSep = ";". /* Proces each attachment */ DO i = 1 TO NUM-ENTRIES(pcFiles,cSep): oContentType = NEW ContentType(). oContentType:MediaType = oMediaType:Application:Octet. /* HOW DO I PASS this VALUE??????????????????? */ oContentType:Name = ENTRY(i, pcFileNames,cSEP). oAttachment = NEW Attachment(ENTRY(i,pcFiles,cSep), oContentType). oMessage:Attachments:Add(oAttachment). DELETE OBJECT oAttachment NO-ERROR. END. END METHOD. /* AddEmailAttachment */ METHOD PUBLIC VOID AddEmailBCC (INPUT pcBCC AS CHARACTER): DEFINE VARIABLE i AS INTEGER NO-UNDO. DEFINE VARIABLE cSep AS CHARACTER NO-UNDO INITIAL ",". /* Could be semi-colon separated */ IF NUM-ENTRIES(pcBCC,";") > 1 THEN cSep = ";". /* Proces each BCC address */ DO i = 1 TO NUM-ENTRIES(pcBCC,cSep): oMessage:bcc:ADD(ENTRY(i,pcBCC,cSep)) NO-ERROR. END. END METHOD. /* AddEmailBCC */ METHOD PUBLIC VOID AddEmailCC (INPUT pcCC AS CHARACTER): DEFINE VARIABLE i AS INTEGER NO-UNDO. DEFINE VARIABLE cSep AS CHARACTER NO-UNDO INITIAL ",". /* Could be semi-colon separated */ IF NUM-ENTRIES(pcCC,";") > 1 THEN cSep = ";". /* Proces each CC address */ DO i = 1 TO NUM-ENTRIES(pcCC,cSep): oMessage:cc:ADD(ENTRY(i,pcCC,cSep)) NO-ERROR. END. END METHOD. /* AddEmailCC */ METHOD PUBLIC VOID CreateEmail (INPUT pcFrom AS CHARACTER, INPUT pcTo AS CHARACTER, INPUT pcSubject AS CHARACTER, INPUT pcBody AS LONGCHAR): CreateMessage (INPUT pcFrom, INPUT pcTo, INPUT pcSubject, INPUT pcBody). END METHOD. /* CreateEmail */ METHOD PUBLIC VOID CreateEmail (INPUT pcTo AS CHARACTER, INPUT pcSubject AS CHARACTER, INPUT pcBody AS LONGCHAR): DEFINE VARIABLE cFrom AS CHARACTER NO-UNDO. {loadibsini.si OPENAccess DefaultFromEmail cFrom} IF cFrom = ? THEN cFrom = "". CreateMessage (INPUT cFrom, INPUT pcTo, INPUT pcSubject, INPUT pcBody). END METHOD. /* CreateEmail */ METHOD PUBLIC VOID SendEmail (): DEF VAR iCount AS INT NO-UNDO. oClient:SEND(oMessage) NO-ERROR. /* CJB01 */ IF ERROR-STATUS:ERROR THEN DO: ASSIGN lv-Error = TRUE. DO iCount = 1 TO ERROR-STATUS:NUM-MESSAGES: ASSIGN lv-ErrorMsg = lv-ErrorMsg + " " + ERROR-STATUS:GET-MESSAGE(iCount). END. END. END METHOD. /* SendEmail */ METHOD PUBLIC LOGICAL hasError(): RETURN lv-Error. END METHOD. METHOD PUBLIC CHAR getErrorMsg(): RETURN lv-ErrorMsg. END METHOD. /* PRIVATE METHODS ---------------------------------------------------------------*/ METHOD PRIVATE VOID CreateClient (INPUT pcHost AS CHARACTER, INPUT piPort AS INTEGER, INPUT plEnableSSL AS LOGICAL, INPUT pcUsername AS CHARACTER, INPUT pcPassword AS CHARACTER): DEFINE VARIABLE oCredentials AS NetworkCredential NO-UNDO. DEFINE VARIABLE iCount AS INT NO-UNDO. /* Setup credentials if username specified */ IF pcUsername <> "" THEN oCredentials = NEW NetworkCredential(pcUsername,pcPassword). /* Handle scenario where host is passed including port e.g. smtp.office365.com:123 */ IF NUM-ENTRIES(pcHost,":") > 1 THEN ASSIGN piPort = INTEGER(ENTRY(2,pcHost,":")) pcHost = ENTRY(1,pcHost,":") NO-ERROR. /* Use a default port if it's unknown, common default for secure SMTP appears to be 587 */ IF piPort = ? OR piPort = 0 THEN piPort = 587. /* Setup client connection to host */ oClient = NEW SmtpClient(). ASSIGN oClient:Host = pcHost oClient:Port = piPort oClient:EnableSSL = plEnableSSL oClient:DeliveryMethod = SmtpDeliveryMethod:Network NO-ERROR. /* CJB01 */ IF ERROR-STATUS:ERROR THEN DO: ASSIGN lv-Error = TRUE. DO iCount = 1 TO ERROR-STATUS:NUM-MESSAGES: ASSIGN lv-ErrorMsg = lv-ErrorMsg + " " + ERROR-STATUS:GET-MESSAGE(iCount). END. END. IF VALID-OBJECT(oCredentials) THEN ASSIGN oClient:UseDefaultCredentials = FALSE oClient:Credentials = oCredentials NO-ERROR. ELSE oClient:UseDefaultCredentials = TRUE. DELETE OBJECT oCredentials NO-ERROR. END METHOD. /* CreateClient */ METHOD PUBLIC VOID CreateMessage (INPUT pcFrom AS CHARACTER, INPUT pcTo AS CHARACTER, INPUT pcSubject AS CHARACTER, INPUT pcBody AS LONGCHAR): oMessage = NEW MailMessage(pcFrom,pcTo,pcSubject,pcBody). /* CJB01 */ IF pcBody BEGINS "<!DOCTYPE" THEN DO: oMessage:IsBodyHtml = TRUE. END. END METHOD. /* CreateMessage */ END CLASS.

Continue reading...
 
Status
Not open for further replies.
Back
Top