SAP ABAP发送HTML格式的邮件

news2025/1/16 16:43:30

 

输入参数:

I_SUBJECT:内容的简短描述

IT_MESSAGE_BODY:邮件主体部分(convert string to table)

IT_ATTACHMENTS:附件内容

I_SENDER_MAIL:发送者的电子邮件地址

I_ATTMSG_CHECK:邮件类型

 

输出参数:

E_RESULT:Boolean Variable (X=True, -=False, Space=Unknown)

传输内表:

RECIPIENTS:接收者的电子邮件地址(可多人)

举例如下

FUNCTION ZCMF_SEND_MAIL.
*"----------------------------------------------------------------------
*"  IMPORTING
*"     REFERENCE(I_SUBJECT) TYPE  SO_OBJ_DES
*"     REFERENCE(IT_MESSAGE_BODY) TYPE  BCSY_TEXT
*"     REFERENCE(IT_ATTACHMENTS) TYPE  RMPS_T_POST_CONTENT OPTIONAL
*"     VALUE(I_SENDER_MAIL) TYPE  ADR6-SMTP_ADDR OPTIONAL
*"     VALUE(I_ATTMSG_CHECK) TYPE  ZEHRATTYP OPTIONAL
*"  EXPORTING
*"     REFERENCE(E_RESULT) TYPE  BOOLEAN
*"  TABLES
*"      RECIPIENTS STRUCTURE  ADR6 OPTIONAL
*"----------------------------------------------------------------------
 
*Data Declaration
  DATA: LO_SENDER        TYPE REF TO IF_SENDER_BCS VALUE IS INITIAL,
        L_RECIPIENT_MAIL TYPE ADR6-SMTP_ADDR.
  DATA : ITAB TYPE TABLE OF SVAL,
            LS_ITAB TYPE SVAL,
            I_RETURN.
  DATA: L_MSG_TYPE TYPE SO_OBJ_TP,
        LO_SEND_REQUEST TYPE REF TO CL_BCS VALUE IS INITIAL.
  DATA: LX_DOCUMENT_BCS TYPE REF TO CX_DOCUMENT_BCS VALUE IS INITIAL,
        ATTACHMENT_SUBJECT TYPE SO_OBJ_DES.
 
  DATA: LO_RECIPIENT TYPE REF TO IF_RECIPIENT_BCS VALUE IS INITIAL.
  DATA: LS_RECIPIENT LIKE LINE OF RECIPIENTS,
  LS_ATTACHMENT LIKE LINE OF IT_ATTACHMENTS.
 
  CLEAR: E_RESULT.
* Sender mail setting
  IF I_SENDER_MAIL IS INITIAL.
    I_SENDER_MAIL = 'xiuxianhai@xxx.com'.
  ENDIF.
 
  CASE I_ATTMSG_CHECK.
    WHEN 'X'. " 
      CLEAR:L_MSG_TYPE.
    WHEN 'H'.
      L_MSG_TYPE = 'HTML'.     " HTML格式
 
    WHEN OTHERS.
      L_MSG_TYPE = 'RAW'.     " 普通格式
  ENDCASE.
*Prepare Mail Object
  CLASS CL_BCS DEFINITION LOAD.
  LO_SEND_REQUEST = CL_BCS=>CREATE_PERSISTENT( ).
* Message body and subject
  DATA: LO_DOCUMENT TYPE REF TO CL_DOCUMENT_BCS VALUE IS INITIAL.
  LO_DOCUMENT = CL_DOCUMENT_BCS=>CREATE_DOCUMENT(
  I_TYPE = L_MSG_TYPE
  I_TEXT =  IT_MESSAGE_BODY
  I_SUBJECT = I_SUBJECT ).
*Send  attachment
  LOOP AT IT_ATTACHMENTS INTO LS_ATTACHMENT.
    ATTACHMENT_SUBJECT = LS_ATTACHMENT-SUBJECT.
    TRY.
        LO_DOCUMENT->ADD_ATTACHMENT(
        EXPORTING
        I_ATTACHMENT_TYPE = LS_ATTACHMENT-OBJTP
        I_ATTACHMENT_SUBJECT = ATTACHMENT_SUBJECT
        I_ATT_CONTENT_HEX = LS_ATTACHMENT-CONT_HEX ).
      CATCH CX_DOCUMENT_BCS INTO LX_DOCUMENT_BCS.
    ENDTRY.
  ENDLOOP.
* Pass the document to send request
  LO_SEND_REQUEST->SET_DOCUMENT( LO_DOCUMENT ).
  TRY.
      IF I_SENDER_MAIL IS NOT INITIAL.
        LO_SENDER = CL_CAM_ADDRESS_BCS=>CREATE_INTERNET_ADDRESS( I_SENDER_MAIL ).
      ENDIF.
* Set sender
      LO_SEND_REQUEST->SET_SENDER(
        EXPORTING
          I_SENDER = LO_SENDER ).
    CATCH CX_ADDRESS_BCS.
      RETURN.
  ENDTRY.
* Set  recipients
  LOOP AT RECIPIENTS INTO LS_RECIPIENT.
    IF LS_RECIPIENT-SMTP_ADDR IS NOT INITIAL.
      L_RECIPIENT_MAIL = LS_RECIPIENT-SMTP_ADDR .
      TRY.
          LO_RECIPIENT = CL_CAM_ADDRESS_BCS=>CREATE_INTERNET_ADDRESS( L_RECIPIENT_MAIL ).
        CATCH CX_ADDRESS_BCS .
      ENDTRY.
    ENDIF.
    LO_SEND_REQUEST->ADD_RECIPIENT(
        EXPORTING
        I_RECIPIENT = LO_RECIPIENT
        I_EXPRESS = 'X' ).
  ENDLOOP.
  TRY.
      CALL METHOD LO_SEND_REQUEST->SET_STATUS_ATTRIBUTES
        EXPORTING
          I_REQUESTED_STATUS = 'E'
          I_STATUS_MAIL      = 'E'.
* set send immediately flag
      LO_SEND_REQUEST->SET_SEND_IMMEDIATELY( 'X' ).
* Send email
      LO_SEND_REQUEST->SEND(
        EXPORTING
          I_WITH_ERROR_SCREEN = 'X'
        RECEIVING
          RESULT = E_RESULT ).
      COMMIT WORK.
      WAIT UP TO 1 SECONDS.
    CATCH CX_SEND_REQ_BCS.
      E_RESULT = ''.
  ENDTRY.
ENDFUNCTION.

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/158900.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

浙大MBA/MPA/MEM复试中的五大认知误区

在每年的研究生复试过程中都不乏大意失荆州者,经过联考初试的洗礼走到复试环节,却因为录取排名的变化而止步于录取大门口。在这些案例中,不少考生其实是针对复试这个环节有诸多认知误区,本期杭州达立易考结合MBA/MEM/MPA在职类硕士…

CentOS配置静态IP

CentOS配置静态IP1.获取VMnet8虚拟网卡的网段2.编辑虚拟机虚拟网络3.虚拟机中网络配置4.验证配置1.获取VMnet8虚拟网卡的网段 通过ipconfig -all查询VMnet8网卡的网段,这个等会需要使用 这里是:192.168.177 这里注意,还需要记录一下宿主机&…

rust字符串

字符串类型 诸位在入门rust的时候,要认真,因为字符串类型在rust中有好几种,一不小心就搞混了类型,导致代码编译报错。好在有强大的rust-analyzer和vscode帮助我们。我们直接通过一段代码来开始认识rust的字符串类型。 fn main()…

nginx学习笔记5(小d课堂)

全局异常兜底数据返回 我们如果访问的路径不存在,会给我们返回一个404.那么我们就可以通过nginx配置去返回兜底数据: 修改完配置,重启nginx。 这样我们就返回我们的兜底数据了。 nginx封禁恶意ip 我们现在随便选择一个ip进行封禁测试。 我们现…

.Net Core 6.0 WebApi配置跨域

ASP.Net Core 6.0 WebApi配置跨域 Program.cs文件代码如下: //配置跨域 builder.Services.AddCors(cor > {var cors configuration.GetSection("CorsUrls").GetChildren().Select(p > p.Value);cor.AddPolicy("Cors", policy >{poli…

92、【树与二叉树】leetcode ——111. 二叉树的最小深度:层次遍历+先序DFS+后序DFS[子问题分解](C++版本)

题目描述 原题链接:111. 二叉树的最小深度 解题思路 1、迭代法:层序遍历BFS 最小深度的特点是第一次遍历到结点的左右指针为NULL,此时该路径为最短路径。 /*** Definition for a binary tree node.* struct TreeNode {* int val;* …

探索SpringMVC-组件之HandlerExceptionResolver

前言 在介绍完Handler、HandlerAdapter、HandlerMapping之后,剩下的比较关键的组件就是HandlerExceptionResolver、ViewResolver。其他的像国际化、主题、文件上传、重定向,这些锦上添花的组件都是一个框架需要关心的。但不是我们平常使用的核心功能&am…

蓝桥杯省赛习题练习(三)

题目来源&#xff1a;2022年第十三届省赛(B组)真题 目录1.九进制转十进制运行结果2. 顺子日期运行结果3. 刷题统计运行结果4. 积木画1.九进制转十进制 问题描述&#xff1a;九进制正整数 (2022)9 转换成十进制等于多少&#xff1f; #include<stdio.h> #include<math.h…

一文带你深入了解线程池

目录一. 什么是线程池二. 为什么要使用线程池三. 线程池的参数四. 线程池的工作流程五. 使用Executors 创建常见的功能线程池一. 什么是线程池 简单来说&#xff0c;线程池就是提前创建好一批线程&#xff0c;当有任务的时候&#xff0c;从池子中取出一个线程去执行该任务&…

再说多线程(二)——细说Monitor类

在上一节我们已经讨论了使用Lock来保证并发程序的一致性&#xff0c;Lock锁是借助了Monitor类的功能。本节将详细的介绍Monitor类&#xff0c;以及如何通过Monitor类的成员函数实现并行程序的一致性。1.Monitor类介绍根据微软的说法&#xff0c;C#中的监视器类提供了一种同步对…

Microsoft Visual SourceSafe的使用

1、介绍 Microsoft Visual SourceSafe&#xff0c;简称vss。是一款早期微软推出的版本管理工具。跟据官方的定义&#xff0c;vss有两种控制模式&#xff1a;独占&#xff08;Lock-Modify-Unlock Model&#xff09;和并行&#xff08;Copy-Modify-Merge Model&#xff09;。独占…

程序的安装——软件安装包的制作、软件源的使用

读书笔记 —— 《嵌入式C语言自我修养》 软件安装 linux 安装包的制作 编译 软件安装包路径 使用dpkg命令来制作安装包 及 安装包的卸载 软件仓库 更新源 查看具体需要更新的软件包 更新软件包 软件安装 软件安装的过程其实就是将一个可执行文件安装到ROM的过…

安全狗云原生安全从1.X到2.X的演变之路(1)

随着云计算技术的蓬勃发展&#xff0c;传统上云实践中的应用升级缓慢、架构臃肿、无法快速迭代等“痛点”日益明显。能够有效解决这些“痛点”的云原生技术正蓬勃发展&#xff0c;成为赋能业务创新的重要推动力&#xff0c;并已经应用到企业核心业务。然而&#xff0c;云原生技…

大型数据中心分层分布式谐波治理方案设计与效果分析

摘要&#xff1a;数据中心行业在国民经济中起到了不可替代的作用,但其繁多的非线性电力负载,如通讯系统、大型计算机、网络控制设备、变频空调、各种数码办公设备、灯光调控系统、UPS、监控系统等给其供电系统带来了严重的谐波干扰,对大型数据中心的运行安全造成了较大的威胁,为…

200:vue+openlayers 添加删除多边形,modify feature,双向互动颜色显示

第200个 点击查看专栏目录 本示例的目的是介绍如何在vue+openlayers项目中添加删除多边形,每绘制一个,左侧列表出一个信息。 hover左侧文字,右边地图上红色显示图形,点击选中右侧地图上某feature,变成蓝色高亮,同时左侧也会蓝色显示,做到双向互动。 高亮显示某feature,…

如何删除图片数据中的重复数据

我们在工作中经常这种情况&#xff0c;leader给你一堆数据&#xff0c;让你用这些没有清洗过的数据完成项目。痛苦的是&#xff0c;这批数据居然存在很多重复的样本。那如何删除这些冗余数据呢&#xff1f;imagehash库非常好用。 github地址&#xff1a;https://github.com/ch…

络达开发----如何开启DMIC

芯片型号&#xff1a;AB1565 功能模块&#xff1a;数字MIC接口的使用 AB1656评估板上支持两路数字MIC&#xff0c;分别为DMIC0和DMIC1&#xff0c;如果图1所示&#xff0c;分别 可以由GPIO_2/3/4/5/13/14/15/16来当数字MIC的接口。 图1&#xff1a;支持DMIC的IO口但是评估板上…

MAC M1使用Rosetta安装python3.6

在使用网上提到的brew和pyenv安装的时候&#xff0c;我的电脑总会报BUILD FAILED错误。 找了一天才找到解决办法&#xff0c;真的十分痛苦&#xff0c;特此记录一下&#xff0c;让别的小伙伴也不再迷茫。 解决办法参考网址&#xff1a;click here&#xff08;需要VPN&#xff…

html跑马灯走马灯效果

演示 <marquee width"100%" scrollamount"5"> <a href"http://www.taobaojp5.tk"><font face"楷体_GB2312" color"#ff0000" size"3"></font><strong>带有超链接的跑马灯!点我试试&…

uwsgi 快速入门

文章目录uwsgi 快速入门一、 概述1、 简单介绍2、 环境配置二、 第一个 WSGI 应用1、 运行2、 添加并发三、 结合 Web 服务器使用1、 Flask2、 Django3、 Nginx配置uwsgi 快速入门 一、 概述 1、 简单介绍 WSGI&#xff08;Web Server Gateway Interface&#xff09;&#x…