使用COBOL编写在IBM i上发送电子邮件的程序

作者:佚名 上传时间:2023-05-26 运行软件:COBOL 软件版本:IBM i(OS/400)V7R4 版权申诉

本示例展示了如何使用COBOL编写在IBM i(OS/400)上发送电子邮件的程序。程序通过IBM i主机上配置的SMTP服务器发送邮件,支持附件和HTML格式。

IDENTIFICATION DIVISION.
       PROGRAM-ID. SENDMAIL.
       ENVIRONMENT DIVISION.
       INPUT-OUTPUT SECTION.
       FILE-CONTROL.
           SELECT EMAIL ASSIGN TO EMAILFILE.
           SELECT ATTACHMENT ASSING TO ATTFILE.
       DATA DIVISION.
       FILE SECTION.
       FD EMAIL
           LABEL RECORDS ARE STANDARD
           DATA RECORD IS EMAIL-RECORD.
       01 EMAIL-RECORD.
           05 EMAIL-TO PIC X(80).
           05 EMAIL-FROM PIC X(80).
           05 EMAIL-SUBJECT PIC X(80).
           05 EMAIL-BODY PIC X(4000).
       FD ATTACHMENT
           LABEL RECORDS ARE STANDARD
           DATA RECORD IS ATTACHMENT-RECORD.
       01 ATTACHMENT-RECORD.
           05 ATT-FILENAME PIC X(80).
           05 ATT-DATA OCCURS 0 TO 200 TIMES DEPENDING ON ATT-SIZE.
               10 ATT-SIZE COMP PIC S9(8) VALUE 0.
               10 ATT-BYTES PIC X(4096).
       WORKING-STORAGE SECTION.
       77 SMTP-SERVER PIC X(40) VALUE 'smtp.example.com'.
       77 SMTP-USER PIC X(15) VALUE 'username'.
       77 SMTP-PASS PIC X(15) VALUE 'password'.
       77 EMAIL-COUNT PIC S9(8) VALUE 0.
       77 ATT-COUNT PIC S9(8) VALUE 0.
       PROCEDURE DIVISION.
       MAIN.
           OPEN INPUT EMAIL ATTACHMENT.
           PERFORM UNTIL EOF(EMAIL)
               READ EMAIL INTO EMAIL-RECORD
                   AT END SET EOF(EMAIL) TO TRUE
               END-READ.
               PERFORM UNTIL EOF(ATTACHMENT)
                   READ ATTACHMENT INTO ATTACHMENT-RECORD
                       AT END SET EOF(ATTACHMENT) TO TRUE
                   END-READ.
                   IF ATT-COUNT = 0
                       CALL 'QP2SHELL' USING '/QOpenSys/usr/bin/base64 -w 0 ' ATT-FILENAME
                       ATT-BYTES = QUOTE(_)SPACE.
                       ATT-SIZE = LENGTH(ATT-BYTES).
                       ATT-COUNT = ATT-COUNT + 1.
                   END-IF.
               END-PERFORM.
               CALL 'QP2SHELL' USING 'openssl s_client -host 'SMTP-SERVER' -port 465 -crlf
                   -authenticate_login -user 'SMTP-USER' 'SMTP-PASS''.
               IF EMAIL-COUNT = 0
                   DISPLAY 'EHLO 'SMTP-SERVER'.
                   DISPLAY 'AUTH LOGIN'.
                   CALL 'QP2SHELL' USING 'echo 'SMTP-USER' | base64 -w 0'.
                   CALL 'QP2SHELL' USING 'echo 'SMTP-PASS' | base64 -w 0'.
                   EMAIL-COUNT = EMAIL-COUNT + 1.
               END-IF.
               DISPLAY 'MAIL FROM:<'EMAIL-FROM'>'.
               DISPLAY 'RCPT TO:<'EMAIL-TO'>'.
               DISPLAY 'DATA'.
               DISPLAY 'MIME-VERSION: 1.0'.
               DISPLAY 'CONTENT-TYPE: MULTIPART/MIXED; BOUNDARY=IAA00000000'.
               DISPLAY 'SUBJECT:' EMAIL-SUBJECT.
               DISPLAY 'TO:' EMAIL-TO.
               DISPLAY 'FROM:' EMAIL-FROM.
               DISPLAY '--IAA00000000'.
               DISPLAY 'CONTENT-TYPE: TEXT/HTML; CHARSET="US-ASCII"'.
               DISPLAY 'CONTENT-TRANSFER-ENCODING: 8BIT'.
               DISPLAY QUOTE(EMAIL-BODY).
               IF ATT-COUNT > 0
                   DISPLAY '--IAA00000000'.
                   DISPLAY 'CONTENT-TYPE: APPLICATION/MSWORD; NAME="'ATT-FILENAME'"'.
                   DISPLAY 'CONTENT-TRANSFER-ENCODING: BASE64'.
                   PERFORM VARYING I FROM 1 BY 55
                       UNTIL I > ATT-SIZE
                       DISPLAY QUOTE(SUBSTRING(ATT-BYTES FROM I FOR 55)) '=='.
                   END-PERFORM.
                   DISPLAY '--IAA00000000--'.
               END-IF.
               DISPLAY '.'.
               DISPLAY 'QUIT'.
           END-PERFORM.
           CLOSE EMAIL ATTACHMENT.
           STOP RUN.

免责申明:文章和图片全部来源于公开网络,如有侵权,请通知删除 server@dude6.com

用户评论
相关推荐
使用COBOL写在IBM i发送电子邮件程序
本示例展示了如何使用COBOL编写在IBM i(OS/400)上发送电子邮件的程序。程序通过IBM i主机上配置的SMTP服务器发送邮件,支持附件和HTML格式。IDENTIFICATION DIV
IBM i(OS/400)V7R4
COBOL
2023-05-26 10:53
使用RPG IV在IBM i发送电子邮件
本示例展示了如何使用RPG IV在IBM i (OS/400)上发送电子邮件。这可以在需要自动发送电子邮件的业务应用程序中使用。H dftactgrp(*no) actgrp('EMAIL')
IBM i 7.2或更高版本
RPG IV
2023-03-21 16:23
通过RPGLE在IBM i发送电子邮件
该示例展示了如何使用RPGLE在IBM i上发送电子邮件。邮件内容可以包含附件。/copy qsysinc/qrpglesrc,pbEmaildcl-s fileName char(128);
IBM i 7.3
IBM Rational Developer for i
2023-05-26 22:39
使用RPGLE在IBM i (os/400)发送电子邮件
本示例代码演示如何使用RPGLE编写程序在IBM i (os/400)上发送电子邮件。该程序具有灵活性,可以根据需要更新发件人,收件人,主题和邮件内容。发送邮件需要设置SMTP服务器和端口号。//发
IBM i 7.4
RPGLE
2023-04-16 18:23
使用 RPGLE 在 IBM i (OS/400) 发送电子邮件
本示例演示如何使用 RPGLE 在 IBM i (OS/400) 上发送电子邮件。介绍了如何设置收件人、主题、正文和附件,并包括以下功能:验证 SMTP 服务器和发送电子邮件。我们将使用 Scott
IBM i 7.3
RPGLE
2023-03-27 15:06
如何在IBM i (OS/400)发送电子邮件
本示例代码演示如何在IBM i (OS/400)上使用API发送电子邮件。实现方式是首先使用API函数QSYSOPR()设置用户的默认邮箱地址,然后使用API函数SNDRPGMAIL()发送邮件。/
IBM i (OS/400) V7R3
IBM
2023-03-17 16:23
使用RPG编写在IBM i编写记录锁定/解锁程序示例
该示例展示了如何使用RPG编写一个简单的记录锁定/解锁程序,以帮助其他程序员更好地管理文件操作。该程序可以在IBM i上运行。/free // 定义需要锁定/解锁的文件 FMYF
IBM i 7.4
RPG IV
2023-05-01 01:11
用RPGLE编写在IBM i生成随机数程序
该示例代码展示了如何在IBM i操作系统上,使用RPGLE语言编写生成随机数的程序。该程序使用了系统的伪随机数生成器,并将生成的随机数作为输入参数传递给另外一个程序进行处理。通过该示例代码,用户可以学
IBM i 7.4
RPGLE
2023-05-30 01:44
如何在IBM i (OS/400)运行COBOL程序
COBOL是IBM i操作系统上常用的编程语言之一。在运行COBOL程序之前,需要确保已经安装了COBOL编译器。以下是一个简单的COBOL程序示例:IDENTIFICATION DIVISION.
IBM i (OS/400) V5R4及以上版本,COBOL编译器
IBM i (OS/400)
2023-03-15 08:56
使用IBM i (OS/400)发送电子邮件示例代码
本示例代码演示了如何在IBM i (OS/400)中使用Java Mail API发送电子邮件。它包括SMTP服务器和身份验证设置以及电子邮件内容。这将帮助需要在IBM i上发送电子邮件的用户快速实现
IBM i (OS/400) V7R4
Java Mail API
2023-05-24 13:00