HOME  NEWS  FORUM  DOWNLOAD  LINK
OpenCOBOL - an open-source COBOL compiler
Main Menu
Download
Documentation
Development
Who's Online
19 user(s) are online (4 user(s) are browsing Forum)

Members: 0
Guests: 19

more...
Powered by
SourceForge

Xoops

Creative Commons

OpenCOBOL Forum Index
   OpenCOBOL
     SMTP/POP3 C Library
Register To Post

Threaded | Newest First Previous Topic | Next Topic | Bottom
Poster Thread
DamonH
Posted on: 2011/4/7 17:34
Quite a regular
Joined: 2010/8/10
From:
Posts: 69
SMTP/POP3 C Library
I was wondering if anyone has done any work with e-mail and OC. I am assuming it is accomplished using c libraries for SMTP/POP3 libraries.

If you have, do you have a recommendation of c library and any example coding?

Thanks a mil!
Damon
jcurrey
Posted on: 2011/4/7 18:34
Home away from home
Joined: 2009/3/19
From: Texas
Posts: 181
Re: SMTP/POP3 C Library
@damonh

We use sendmail in the debian world.

Our routines are setup as copybooks (data, procedure).

I can send them to you if you wish.

jimc
btiffin
Posted on: 2011/4/16 4:49
Home away from home
Joined: 2008/6/7
From: CANADA
Posts: 1196
Re: SMTP/POP3 C Library
And I'd like to maybe delve back into occurlrefresh and see how much tweaking it takes to turn a downloader into a mail client. Not much I'll bet. libCURL is funky cool.

Cheers,
Brian
Bear
Posted on: 2011/11/30 11:17
Home away from home
Joined: 2006/12/12
From: Lyon FRANCE
Posts: 173
Re: SMTP/POP3 C Library
Hello Jim,

Can You send me your copybooks if you don't mind
My world is Debian

Best regards

Francois
jcurrey
Posted on: 2011/11/30 21:09
Home away from home
Joined: 2009/3/19
From: Texas
Posts: 181
Re: SMTP/POP3 C Library
First a little bit of Brian's humor:

Francois I am confused -- are you a Lyon or are you a Bear



I do not have your e-mail address so I am taking the risk of posting the code to the forum. The code is not pretty -- we have never gotten around to cleaning it up -- but it works quite well every day.

You will note that we stayed out of C and kept it all in OpenCOBOL.

First the data division stuff:

      *****************************************************
      *  VARIABLE COPYLIB FOR SENDMAIL-PROCEDURES.CPY     *
      *                                                   *
      *  VERSION 001--ORIGINAL VERSION                    *
      *               1266048--JIM CURREY                 *
      *               06/03/2009--MARC RODRIGUEZ          *
      *  VERSION 002--CHANGED TO CORRECTLY COMPARE NULL   *
      *               POINTERS.                           *
      *               1266048--JIM CURREY                 *
      *               08/05/2009-MARC RODRIGUEZ           *
      *****************************************************
      * THE FOLLOWING VARIABLES MUST BE NULL TERMINATED!
       01  MAIL-TO-ADDRESS                     PIC X(64).
       01  MAIL-SUBJECT                        PIC X(50).
       01  MAIL-FROM-ADDRESS                   PIC X(64).
       01  MAIL-FROM-FULL-NAME                 PIC X(50).
       01  MAIL-BODY-LINE                      PIC X(256).
      * END OF NULL TERMINATED VARS
      *
      * MAIL-OUTPUT-RECORD MUST BE 2 CHARS LARGER THAN
      *  MAIL-BODY-LINE!
       01  MAIL-OUTPUT-RECORD                  PIC X(258).
       01  MAIL-RETURN                         USAGE BINARY-LONG.
      * MAIL-ERROR-TEXT WILL BE POPULATED IF AND WHEN AN ERROR OCCURS
       01  MAIL-ERROR-TEXT                     PIC X(80).
       01  MAIL-COMMAND-LINE                   PIC X(256).
       01  MAIL-TEMP-FILE-POINTER              USAGE POINTER.
080509 01  MAIL-DUMMY-POINTER                  USAGE POINTER.
       01  MAIL-TEMP-FILE-NAME                 PIC X(256).
       01  MAIL-TEMP-FILE-MODE                 PIC X VALUE "w".
      * THESE WILL BE USED AS A GENERIC CHAR * (POINTER) FOR 
      *   OUR CALLS TO C
       01  MAIL-POINTER                        USAGE POINTER.
       01  MAIL-POINTER-2                      USAGE POINTER.



Next the procedure division stuff:

      *****************************************************
      *  WILL SEND A PLAIN-TEXT EMAIL VIA SENDMAIL        *
      *                                                   *
      *  VERSION 001--ORIGINAL VERSION                    *
      *               1266048--JIM CURREY                 *
      *               06/03/2009--MARC RODRIGUEZ          *
      *  VERSION 002--ADDED STANDARDS WARNING COMMENT.    *
      *               1343662--JIM CURREY                 *
      *               02/23/2010--JOSE ROSADO             *
      *  VERSION 003--CORRECTS HANDLING OF ERRORS - ON THE*
      *               FIRST ERROR, WE EXIT THE ROUTINE AND*
      *               ALLOW THE CALLING PROGRAM TO HANDLE *
      *               DISPLAYING THE ERROR (SEE /private- *
      *               set-1/progroot/task/source/         *
      *               task_entry.cbl                      *
      *               1352525--SANDY DOSS                 *
      *               07/01/2011--SANDY DOSS              *
      *****************************************************
      * BE ADVISED! THIS CODE IS NOT UP TO STANDARDS! THE *
      * FACT THIS CODE EXISTS AS IT IS DOES NOT AUTHORIZE *
      * THE USE OF SIMILAR CODE IN FUTURE PROGRAMS!       *
      *                                     --J.C. CURREY *
      *****************************************************
      * MAIL-INIT                                         *
      *                                                   *
      *   ROUTINE WILL SETUP EMAIL                        *
      *   REQUIRES: MAIL-TO-ADDRESS                       *
      *             MAIL-SUBJECT                          *
      *             MAIL-FROM-ADDRESS                     *
      *****************************************************
       MAIL-INIT.
           MOVE SPACES TO MAIL-ERROR-TEXT.
080509     INITIALIZE MAIL-DUMMY-POINTER.
           IF MAIL-TO-ADDRESS IS EQUAL TO SPACES
	     THEN MOVE "MISSING TO-ADDRESS" TO MAIL-ERROR-TEXT
	          GO TO MAIL-INIT-EXIT.
           IF MAIL-SUBJECT IS EQUAL TO SPACES 
	     THEN MOVE "MISSING SUBJECT" TO MAIL-ERROR-TEXT
	          GO TO MAIL-INIT-EXIT.
	   IF MAIL-FROM-ADDRESS IS EQUAL TO SPACES
	     THEN MOVE "MISSING FROM-ADDRESS" TO MAIL-ERROR-TEXT
	          GO TO MAIL-INIT-EXIT.
      * MAIL-POINTER NOW POINTS TO MAIL-TEMP-FILE-NAME
           MOVE ADDRESS OF MAIL-TEMP-FILE-NAME TO MAIL-POINTER.
	   CALL "tmpnam" USING BY VALUE MAIL-POINTER.
      * MAIL-POINTER-2 NOW POINTS TO MAIL-TEMP-FILE-MODE
	   MOVE ADDRESS OF MAIL-TEMP-FILE-MODE TO MAIL-POINTER-2.
	   CALL "fopen" USING     BY VALUE MAIL-POINTER
	                          BY VALUE MAIL-POINTER-2
			RETURNING MAIL-TEMP-FILE-POINTER.
080509*    IF MAIL-TEMP-FILE-POINTER IS EQUAL TO ZERO
080509     IF MAIL-TEMP-FILE-POINTER IS EQUAL TO MAIL-DUMMY-POINTER
	     THEN MOVE "UNABLE TO OPEN TEMP FILE" TO 
070111*             MAIL-ERROR-TEXT.
070111              MAIL-ERROR-TEXT
070111            GO TO MAIL-INIT-EXIT.
       MAIL-WRITE-HEADERS.
	   MOVE SPACES TO MAIL-BODY-LINE.
	   STRING "To: " DELIMITED BY SIZE
	     MAIL-TO-ADDRESS DELIMITED BY LOW-VALUE
	     X"0A" DELIMITED BY SIZE
	     X"00" DELIMITED BY SIZE
	     INTO MAIL-BODY-LINE.
	   CALL "fputs" USING     MAIL-BODY-LINE
	                          BY VALUE MAIL-TEMP-FILE-POINTER
			RETURNING MAIL-RETURN.
	   IF MAIL-RETURN IS LESS THAN OR EQUAL TO ZERO
	     THEN MOVE "ERROR WRITING TO TEMPORARY FILE" TO
070111*             MAIL-ERROR-TEXT.
070111              MAIL-ERROR-TEXT
070111            GO TO MAIL-INIT-EXIT.
      *
	   MOVE SPACES TO MAIL-BODY-LINE.
	   STRING "Subject: " DELIMITED BY SIZE
	     MAIL-SUBJECT DELIMITED BY LOW-VALUE
	     X"0A" DELIMITED BY SIZE
	     X"00" DELIMITED BY SIZE
	     INTO MAIL-BODY-LINE.
	   CALL "fputs" USING     MAIL-BODY-LINE
	                          BY VALUE MAIL-TEMP-FILE-POINTER
			RETURNING MAIL-RETURN.
	   IF MAIL-RETURN IS LESS THAN OR EQUAL TO ZERO
	     THEN MOVE "ERROR WRITING TO TEMPORARY FILE" TO
070111*             MAIL-ERROR-TEXT.
070111              MAIL-ERROR-TEXT
070111            GO TO MAIL-INIT-EXIT.
      *
	   MOVE SPACES TO MAIL-BODY-LINE.
	   STRING "Body: " DELIMITED BY SIZE
	     X"0A" DELIMITED BY SIZE
	     X"00" DELIMITED BY SIZE
	     INTO MAIL-BODY-LINE.
	   CALL "fputs" USING     MAIL-BODY-LINE
	                          BY VALUE MAIL-TEMP-FILE-POINTER
			RETURNING MAIL-RETURN.
	   IF MAIL-RETURN IS LESS THAN OR EQUAL TO ZERO
	     THEN MOVE "ERROR WRITING TO TEMPORARY FILE" TO
	            MAIL-ERROR-TEXT.
       MAIL-INIT-EXIT.
           EXIT.
      *****************************************************
      * MAIL-WRITE-BODY-LINE                              *
      *                                                   *
      * WILL WRITE A SINGLE LINE OF TEXT TO AN EMAIL      *
      * MAIL-INIT MUST BE PERFORMED BEFORE THIS ROUTINE!  *
      *****************************************************
       MAIL-WRITE-BODY-LINE.
           MOVE SPACES TO MAIL-ERROR-TEXT, MAIL-OUTPUT-RECORD.
080509*    IF MAIL-TEMP-FILE-POINTER IS EQUAL TO ZERO
080509     IF MAIL-TEMP-FILE-POINTER IS EQUAL TO MAIL-DUMMY-POINTER
	     THEN MOVE "INVALID TEMP FILE POINTER" TO MAIL-ERROR-TEXT
	          GO TO MAIL-WRITE-BODY-LINE-EXIT.
	   STRING MAIL-BODY-LINE DELIMITED BY LOW-VALUE
	     X"0A" DELIMITED BY SIZE
	     X"00" DELIMITED BY SIZE
	     INTO MAIL-OUTPUT-RECORD.
	   CALL "fputs" USING     MAIL-OUTPUT-RECORD 
	                          BY VALUE MAIL-TEMP-FILE-POINTER
			RETURNING MAIL-RETURN.
	   IF MAIL-RETURN IS LESS THAN OR EQUAL TO ZERO
	     THEN MOVE "ERROR WRITING TO TEMPORARY FILE" TO
	            MAIL-ERROR-TEXT.
       MAIL-WRITE-BODY-LINE-EXIT.
           EXIT.
      *****************************************************
      * MAIL-SEND                                         *
      *                                                   *
      * WILL ACTUALLY SEND THE EMAIL; ENDING THE PROCESS  *
      *****************************************************
       MAIL-SEND.
	   MOVE SPACES TO MAIL-BODY-LINE.
	   STRING "." DELIMITED BY SIZE
	     X"0A" DELIMITED BY SIZE
	     X"00" DELIMITED BY SIZE
	     INTO MAIL-BODY-LINE.
	   CALL "fputs" USING     MAIL-BODY-LINE
	                          BY VALUE MAIL-TEMP-FILE-POINTER
			RETURNING MAIL-RETURN.
	   IF MAIL-RETURN IS LESS THAN OR EQUAL TO ZERO
	     THEN MOVE "ERROR WRITING TO TEMPORARY FILE" TO
070111*             MAIL-ERROR-TEXT.
070111              MAIL-ERROR-TEXT
070111            GO TO MAIL-SEND-EXIT.
      *
	   CALL "fclose" USING     BY VALUE MAIL-TEMP-FILE-POINTER
	                 RETURNING MAIL-RETURN.
070111     IF MAIL-RETURN IS NOT EQUAL TO ZERO
070111*             MAIL-ERROR-TEXT.
	     THEN MOVE "ERROR CLOSING TEMPORARY FILE" TO   
070111              MAIL-ERROR-TEXT
070111            GO TO MAIL-SEND-EXIT.
      * MAIL-POINTER NOW POINTS TO MAIL-BODY-LINE!
           MOVE ADDRESS OF MAIL-BODY-LINE TO MAIL-POINTER.
       MAIL-SEND-COMMAND.
           MOVE SPACES TO MAIL-COMMAND-LINE.
           STRING 'cat ' DELIMITED BY SIZE
	     MAIL-TEMP-FILE-NAME DELIMITED BY LOW-VALUE
	     ' | /usr/sbin/sendmail -t -f "'
	       DELIMITED BY SIZE
	     MAIL-FROM-ADDRESS DELIMITED BY LOW-VALUE
	     '" -F "' DELIMITED BY SIZE
	     MAIL-FROM-FULL-NAME DELIMITED BY LOW-VALUE
	     '"' DELIMITED BY SIZE
	     INTO MAIL-COMMAND-LINE.
           CALL "SYSTEM" USING     MAIL-COMMAND-LINE
	                 RETURNING MAIL-RETURN.
070111     IF MAIL-RETURN IS GREATER THAN ZERO 
	     THEN MOVE "ERROR OCCURRED SENDING EMAIL" TO 
070111*             MAIL-ERROR-TEXT.
070111              MAIL-ERROR-TEXT
070111            GO TO MAIL-SEND-EXIT.
       MAIL-SEND-CLEANUP.
      * MAIL-POINTER NOW POINTS TO MAIL-TEMP-FILE-NAME
           MOVE ADDRESS OF MAIL-TEMP-FILE-NAME TO MAIL-POINTER.
           CALL "remove" USING     BY VALUE MAIL-POINTER
                         RETURNING MAIL-RETURN.
           IF MAIL-RETURN IS NOT EQUAL TO ZERO
             THEN MOVE "UNABLE TO DELETE TEMP FILE" TO MAIL-ERROR-TEXT.
       MAIL-SEND-EXIT.
           EXIT.


Then the program we used to test it:

      *****************************************************
      *  WILL SEND A PLAIN-TEXT EMAIL VIA SENDMAIL        *
      *                                                   *
      *  VERSION 001--ORIGINAL VERSION                    *
      *               1266048--JIM CURREY                 *
      *               06/03/2009--MARC RODRIGUEZ          *
      *  VERSION 002--ADDED STANDARDS WARNING COMMENT.    *
      *               1343662--JIM CURREY                 *
      *               02/23/2010--JOSE ROSADO             *
      *  VERSION 003--CORRECTS HANDLING OF ERRORS - ON THE*
      *               FIRST ERROR, WE EXIT THE ROUTINE AND*
      *               ALLOW THE CALLING PROGRAM TO HANDLE *
      *               DISPLAYING THE ERROR (SEE /private- *
      *               set-1/progroot/task/source/         *
      *               task_entry.cbl                      *
      *               1352525--SANDY DOSS                 *
      *               07/01/2011--SANDY DOSS              *
      *****************************************************
      * BE ADVISED! THIS CODE IS NOT UP TO STANDARDS! THE *
      * FACT THIS CODE EXISTS AS IT IS DOES NOT AUTHORIZE *
      * THE USE OF SIMILAR CODE IN FUTURE PROGRAMS!       *
      *                                     --J.C. CURREY *
      *****************************************************
      * MAIL-INIT                                         *
      *                                                   *
      *   ROUTINE WILL SETUP EMAIL                        *
      *   REQUIRES: MAIL-TO-ADDRESS                       *
      *             MAIL-SUBJECT                          *
      *             MAIL-FROM-ADDRESS                     *
      *****************************************************
       MAIL-INIT.
           MOVE SPACES TO MAIL-ERROR-TEXT.
080509     INITIALIZE MAIL-DUMMY-POINTER.
           IF MAIL-TO-ADDRESS IS EQUAL TO SPACES
	     THEN MOVE "MISSING TO-ADDRESS" TO MAIL-ERROR-TEXT
	          GO TO MAIL-INIT-EXIT.
           IF MAIL-SUBJECT IS EQUAL TO SPACES 
	     THEN MOVE "MISSING SUBJECT" TO MAIL-ERROR-TEXT
	          GO TO MAIL-INIT-EXIT.
	   IF MAIL-FROM-ADDRESS IS EQUAL TO SPACES
	     THEN MOVE "MISSING FROM-ADDRESS" TO MAIL-ERROR-TEXT
	          GO TO MAIL-INIT-EXIT.
      * MAIL-POINTER NOW POINTS TO MAIL-TEMP-FILE-NAME
           MOVE ADDRESS OF MAIL-TEMP-FILE-NAME TO MAIL-POINTER.
	   CALL "tmpnam" USING BY VALUE MAIL-POINTER.
      * MAIL-POINTER-2 NOW POINTS TO MAIL-TEMP-FILE-MODE
	   MOVE ADDRESS OF MAIL-TEMP-FILE-MODE TO MAIL-POINTER-2.
	   CALL "fopen" USING     BY VALUE MAIL-POINTER
	                          BY VALUE MAIL-POINTER-2
			RETURNING MAIL-TEMP-FILE-POINTER.
080509*    IF MAIL-TEMP-FILE-POINTER IS EQUAL TO ZERO
080509     IF MAIL-TEMP-FILE-POINTER IS EQUAL TO MAIL-DUMMY-POINTER
	     THEN MOVE "UNABLE TO OPEN TEMP FILE" TO 
070111*             MAIL-ERROR-TEXT.
070111              MAIL-ERROR-TEXT
070111            GO TO MAIL-INIT-EXIT.
       MAIL-WRITE-HEADERS.
	   MOVE SPACES TO MAIL-BODY-LINE.
	   STRING "To: " DELIMITED BY SIZE
	     MAIL-TO-ADDRESS DELIMITED BY LOW-VALUE
	     X"0A" DELIMITED BY SIZE
	     X"00" DELIMITED BY SIZE
	     INTO MAIL-BODY-LINE.
	   CALL "fputs" USING     MAIL-BODY-LINE
	                          BY VALUE MAIL-TEMP-FILE-POINTER
			RETURNING MAIL-RETURN.
	   IF MAIL-RETURN IS LESS THAN OR EQUAL TO ZERO
	     THEN MOVE "ERROR WRITING TO TEMPORARY FILE" TO
070111*             MAIL-ERROR-TEXT.
070111              MAIL-ERROR-TEXT
070111            GO TO MAIL-INIT-EXIT.
      *
	   MOVE SPACES TO MAIL-BODY-LINE.
	   STRING "Subject: " DELIMITED BY SIZE
	     MAIL-SUBJECT DELIMITED BY LOW-VALUE
	     X"0A" DELIMITED BY SIZE
	     X"00" DELIMITED BY SIZE
	     INTO MAIL-BODY-LINE.
	   CALL "fputs" USING     MAIL-BODY-LINE
	                          BY VALUE MAIL-TEMP-FILE-POINTER
			RETURNING MAIL-RETURN.
	   IF MAIL-RETURN IS LESS THAN OR EQUAL TO ZERO
	     THEN MOVE "ERROR WRITING TO TEMPORARY FILE" TO
070111*             MAIL-ERROR-TEXT.
070111              MAIL-ERROR-TEXT
070111            GO TO MAIL-INIT-EXIT.
      *
	   MOVE SPACES TO MAIL-BODY-LINE.
	   STRING "Body: " DELIMITED BY SIZE
	     X"0A" DELIMITED BY SIZE
	     X"00" DELIMITED BY SIZE
	     INTO MAIL-BODY-LINE.
	   CALL "fputs" USING     MAIL-BODY-LINE
	                          BY VALUE MAIL-TEMP-FILE-POINTER
			RETURNING MAIL-RETURN.
	   IF MAIL-RETURN IS LESS THAN OR EQUAL TO ZERO
	     THEN MOVE "ERROR WRITING TO TEMPORARY FILE" TO
	            MAIL-ERROR-TEXT.
       MAIL-INIT-EXIT.
           EXIT.
      *****************************************************
      * MAIL-WRITE-BODY-LINE                              *
      *                                                   *
      * WILL WRITE A SINGLE LINE OF TEXT TO AN EMAIL      *
      * MAIL-INIT MUST BE PERFORMED BEFORE THIS ROUTINE!  *
      *****************************************************
       MAIL-WRITE-BODY-LINE.
           MOVE SPACES TO MAIL-ERROR-TEXT, MAIL-OUTPUT-RECORD.
080509*    IF MAIL-TEMP-FILE-POINTER IS EQUAL TO ZERO
080509     IF MAIL-TEMP-FILE-POINTER IS EQUAL TO MAIL-DUMMY-POINTER
	     THEN MOVE "INVALID TEMP FILE POINTER" TO MAIL-ERROR-TEXT
	          GO TO MAIL-WRITE-BODY-LINE-EXIT.
	   STRING MAIL-BODY-LINE DELIMITED BY LOW-VALUE
	     X"0A" DELIMITED BY SIZE
	     X"00" DELIMITED BY SIZE
	     INTO MAIL-OUTPUT-RECORD.
	   CALL "fputs" USING     MAIL-OUTPUT-RECORD 
	                          BY VALUE MAIL-TEMP-FILE-POINTER
			RETURNING MAIL-RETURN.
	   IF MAIL-RETURN IS LESS THAN OR EQUAL TO ZERO
	     THEN MOVE "ERROR WRITING TO TEMPORARY FILE" TO
	            MAIL-ERROR-TEXT.
       MAIL-WRITE-BODY-LINE-EXIT.
           EXIT.
      *****************************************************
      * MAIL-SEND                                         *
      *                                                   *
      * WILL ACTUALLY SEND THE EMAIL; ENDING THE PROCESS  *
      *****************************************************
       MAIL-SEND.
	   MOVE SPACES TO MAIL-BODY-LINE.
	   STRING "." DELIMITED BY SIZE
	     X"0A" DELIMITED BY SIZE
	     X"00" DELIMITED BY SIZE
	     INTO MAIL-BODY-LINE.
	   CALL "fputs" USING     MAIL-BODY-LINE
	                          BY VALUE MAIL-TEMP-FILE-POINTER
			RETURNING MAIL-RETURN.
	   IF MAIL-RETURN IS LESS THAN OR EQUAL TO ZERO
	     THEN MOVE "ERROR WRITING TO TEMPORARY FILE" TO
070111*             MAIL-ERROR-TEXT.
070111              MAIL-ERROR-TEXT
070111            GO TO MAIL-SEND-EXIT.
      *
	   CALL "fclose" USING     BY VALUE MAIL-TEMP-FILE-POINTER
	                 RETURNING MAIL-RETURN.
070111     IF MAIL-RETURN IS NOT EQUAL TO ZERO
070111*             MAIL-ERROR-TEXT.
	     THEN MOVE "ERROR CLOSING TEMPORARY FILE" TO   
070111              MAIL-ERROR-TEXT
070111            GO TO MAIL-SEND-EXIT.
      * MAIL-POINTER NOW POINTS TO MAIL-BODY-LINE!
           MOVE ADDRESS OF MAIL-BODY-LINE TO MAIL-POINTER.
       MAIL-SEND-COMMAND.
           MOVE SPACES TO MAIL-COMMAND-LINE.
           STRING 'cat ' DELIMITED BY SIZE
	     MAIL-TEMP-FILE-NAME DELIMITED BY LOW-VALUE
	     ' | /usr/sbin/sendmail -t -f "'
	       DELIMITED BY SIZE
	     MAIL-FROM-ADDRESS DELIMITED BY LOW-VALUE
	     '" -F "' DELIMITED BY SIZE
	     MAIL-FROM-FULL-NAME DELIMITED BY LOW-VALUE
	     '"' DELIMITED BY SIZE
	     INTO MAIL-COMMAND-LINE.
           CALL "SYSTEM" USING     MAIL-COMMAND-LINE
	                 RETURNING MAIL-RETURN.
070111     IF MAIL-RETURN IS GREATER THAN ZERO 
	     THEN MOVE "ERROR OCCURRED SENDING EMAIL" TO 
070111*             MAIL-ERROR-TEXT.
070111              MAIL-ERROR-TEXT
070111            GO TO MAIL-SEND-EXIT.
       MAIL-SEND-CLEANUP.
      * MAIL-POINTER NOW POINTS TO MAIL-TEMP-FILE-NAME
           MOVE ADDRESS OF MAIL-TEMP-FILE-NAME TO MAIL-POINTER.
           CALL "remove" USING     BY VALUE MAIL-POINTER
                         RETURNING MAIL-RETURN.
           IF MAIL-RETURN IS NOT EQUAL TO ZERO
             THEN MOVE "UNABLE TO DELETE TEMP FILE" TO MAIL-ERROR-TEXT.
       MAIL-SEND-EXIT.
           EXIT.


Please ignore my comments inside the code where I warn the staff that these particular programs are not authorization for them to ignore our programming standards.

jimc
Bear
Posted on: 2011/12/1 21:43
Home away from home
Joined: 2006/12/12
From: Lyon FRANCE
Posts: 173
Re: SMTP/POP3 C Library
Wonderful humor ! The Bear is in Lyon, and he is getting older every year.

By the way, my email is active on this website.

Thank you Jim

Regards

Francois
lordnikon
Posted on: 2011/12/13 15:31
Just popping in
Joined: 2011/4/17
From:
Posts: 3
Re: SMTP/POP3 C Library
What about using "mail"? Would be something like this...

OCOBOL >>SOURCE FORMAT IS FIXED
      *> ************************************************************ <*
      *> Author:    Robert Doerfler
      *> Date:      2011-12-13
      *> Purpose:   sending some mail
      *> Tectonics: cobc
      *> ************************************************************ <*
       identification division.
       program-id. sendsomemail.

       environment division.
       input-output section.
       data division.
       working-storage section.

       01  MAIL-TO-ADDRESS                     PIC X(64).
       01  MAIL-SUBJECT                        PIC X(64).
       01  MAIL-FROM-ADDRESS                   PIC X(64).
       01  MAIL-BODY                           PIC X(256).
       01  MAIL-COMMAND                        PIC X(512).
       01  MAIL-RETURN                         USAGE BINARY-LONG.

       procedure division.
       beginning.


       MOVE "test@test.org" TO MAIL-TO-ADDRESS.
       MOVE "COBOL EMAIL TEST" TO MAIL-SUBJECT.
       MOVE "test@test.org" TO MAIL-FROM-ADDRESS.
       MOVE "test test test test " TO MAIL-BODY.

       STRING "echo '" DELIMITED BY SIZE
                MAIL-BODY-LINE DELIMITED BY SIZE
                "' | mail -r " DELIMITED BY SIZE
                MAIL-FROM-ADDRESS DELIMITED BY SIZE
                "-s " DELIMITED BY SIZE
                MAIL-SUBJECT DELIMITED BY SIZE
                MAIL-TO-ADDRESS DELIMITED BY SIZE
              INTO MAIL-COMMAND.

       CALL "SYSTEM" USING MAIL-COMMAND
                     RETURNING MAIL-RETURN.

       goback.
lordnikon
Posted on: 2011/12/15 20:01
Just popping in
Joined: 2011/4/17
From:
Posts: 3
Re: SMTP/POP3 C Library
Ok, i have been asked to post some code how to send a mail with attachments and opencobol. I'm using the MUA named "mutt" for handling all the attachment stuff. It could be done with uuencode, too.

OCOBOL >>SOURCE FORMAT IS FIXED
      *> ************************************************************ <*
      *> Author:    Robert Doerfler
      *> Date:      2011-12-13
      *> Purpose:   sending some mail with attachments
      *> Tectonics: cobc
      *> ************************************************************ <*
       identification division.
       program-id. sendsomemail.

       environment division.
       input-output section.
       data division.
       working-storage section.

       01  MAIL-TO-ADDRESS                     PIC X(64).
       01  MAIL-SUBJECT                        PIC X(64).
       01  MAIL-BODY                           PIC X(256).
       01  MAIL-COMMAND                        PIC X(600).
       01  MAIL-RETURN                         USAGE BINARY-LONG.
       01  MAIL-ATTACHMENT-FILENAME            PIC X(64).

       procedure division.
       beginning.

       MOVE "rodo@zlug.org" TO MAIL-TO-ADDRESS.
       MOVE "COBOL EMAIL TEST" TO MAIL-SUBJECT.
       MOVE "test test test test " TO MAIL-BODY.

       MOVE "/tmp/test.pdf" TO MAIL-ATTACHMENT-FILENAME.

      *> echo 'body line ' | mutt -s 'subject line' -a /tmp/test.pdf <*
      *>                        -- rodo@bloerp.de                    <* 


       STRING "echo '" DELIMITED BY SIZE
              MAIL-BODY DELIMITED BY SIZE
              "' | " DELIMITED BY SIZE
              "mutt " DELIMITED BY SIZE
              " -s '" DELIMITED BY SIZE
              MAIL-SUBJECT DELIMITED BY SIZE
              "' -a " DELIMITED BY SIZE
              MAIL-ATTACHMENT-FILENAME DELIMITED BY SIZE
              " -- " DELIMITED BY SIZE
              MAIL-TO-ADDRESS DELIMITED BY SIZE
                
              INTO MAIL-COMMAND.

       CALL "SYSTEM" USING MAIL-COMMAND
                     RETURNING MAIL-RETURN.

       goback.
Threaded | Newest First Previous Topic | Next Topic | Top

Register To Post
 
Copyright (C) 2005 The OpenCOBOL Project. All rights reserved.
Powered by Xoops2 | PHP | MySQL | Apache
ocean-net