1.********************

  • *调用发送邮件函数
  • CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
  • EXPORTING
  • DOCUMENT_DATA                = DOC_CHNG
  • "subject and description
  • PUT_IN_OUTBOX                = 'X'  "send in_outbox
  • TABLES
  • PACKING_LIST                 = OBJPACK
  • OBJECT_HEADER                = OBJHEAD
  • CONTENTS_BIN                 = OBJBIN  "attachments
  • CONTENTS_TXT                 = OBJTXT  "mail body
  • RECEIVERS                        = RECLIST  "RECEIVE LIST
  • EXCEPTIONS
  • TOO_MANY_RECEIVERS       = 1
  • DOCUMENT_NOT_SENT            = 2
  • OPERATION_NO_AUTHORIZATION = 4
  • OTHERS                       = 99.
  • CASE SY-SUBRC.
  • WHEN 0.
  • *  当执行邮件发送成功后,确认提交,不调用此过程邮件将队列等待直到确认后才正式发送
  • *  遇到错误信息输出提示
  • SUBMIT RSCONN01
  • WITH MODE EQ 'INT'
  • AND RETURN.
  • MESSAGE S001(00) WITH 'Sent Mail success!'.
  • WHEN 1.
  • WRITE: / 'No authorization for sending to the specified number',
  • 'of recipients'.
  • WHEN 2.
  • WRITE: / 'Document could not be sent to any recipient'.
  • WHEN 4.
  • WRITE: / 'No send authorization'.
  • WHEN OTHERS.
  • WRITE: / 'Error occurred while sending'.
  • ENDCASE.

2。********************************

  DATA: OBJECT_HD_CHANGE LIKE SOOD1 OCCURS  WITH HEADER LINE, " 邮件正文的头信息
        RECEIVERS LIKE SOOS1 OCCURS  WITH HEADER LINE,
        PACKING_LIST LIKE SOXPL OCCURS  WITH HEADER LINE, " 邮件附件的头信息
        OBJCONT LIKE SOLI OCCURS  WITH HEADER LINE, " 邮件正文
        ATT_CONT LIKE SOLI OCCURS  WITH HEADER LINE, " 邮件附件
        ATT_HEAD LIKE SOLI OCCURS  WITH HEADER LINE. " 头行   OBJECT_HD_CHANGE-OBJLA = 'E'.                "创建文档使用的语言
  OBJECT_HD_CHANGE-OBJNAM = 'LIST'.            "文档,文件夹或分配清单的名称
  OBJECT_HD_CHANGE-OBJDES = TITLE.             "内容的简短描述CHAR50
  OBJECT_HD_CHANGE-OBJSNS = 'O'.               "对象:灵敏度  P机密 F功能 O标准
  APPEND OBJECT_HD_CHANGE.   LOOP AT REC_NAME.
    RECEIVERS-RECEXTNAM = REC_NAME.
    RECEIVERS-RECESC = 'U'.
    APPEND RECEIVERS.   ENDLOOP.
  LOOP AT ZOBJCONT.
    OBJCONT-LINE = ZOBJCONT-LINE.
    APPEND OBJCONT.
  ENDLOOP.   CALL FUNCTION 'SO_OBJECT_SEND'
    EXPORTING
      OBJECT_HD_CHANGE           = OBJECT_HD_CHANGE
      OBJECT_TYPE                = 'RAW'             " RAW SAP编辑程序文件
      SENDER                     = SY-UNAME          " 发送者用户名
    TABLES
      OBJCONT                    = OBJCONT           " Content
      RECEIVERS                  = RECEIVERS         " 接收人地址
      PACKING_LIST               = PACKING_LIST      " 邮件内容
      ATT_CONT                   = ATT_CONT          " 附件
      ATT_HEAD                   = ATT_HEAD          " 标题
    EXCEPTIONS
      ACTIVE_USER_NOT_EXIST      = 
      COMMUNICATION_FAILURE      = 
      COMPONENT_NOT_AVAILABLE    = 
      FOLDER_NOT_EXIST           = 
      FOLDER_NO_AUTHORIZATION    = 
      FORWARDER_NOT_EXIST        = 
      NOTE_NOT_EXIST             = 
      OBJECT_NOT_EXIST           = 
      OBJECT_NOT_SENT            = 
      OBJECT_NO_AUTHORIZATION    = 
      OBJECT_TYPE_NOT_EXIST      = 
      OPERATION_NO_AUTHORIZATION = 
      OWNER_NOT_EXIST            = 
      PARAMETER_ERROR            = 
      SUBSTITUTE_NOT_ACTIVE      = 
      SUBSTITUTE_NOT_DEFINED     = 
      SYSTEM_FAILURE             = 
      TOO_MUCH_RECEIVERS         = 
      USER_NOT_EXIST             = 
      ORIGINATOR_NOT_EXIST       = 
      X_ERROR                    = 
      OTHERS                     = .

3.**************************

 TRY.

*    创建发送请求
l_send_request = cl_bcs=>create_persistent( ). * 设定发送内容
l_document = cl_document_bcs=>create_document( i_type = 'RAW'
i_text = i_content[]
I_IMPORTANCE = ''
i_subject = l_subject ).
* 增加发送内容到发送请求
CALL METHOD l_send_request->set_document( l_document ).
* 取得发送者(取得发件人,前提是这个邮箱地址能发邮件,并且不需要密码)
l_uname = sy-uname.
l_sender = cl_sapuser_bcs=>create( l_uname ).
CALL METHOD l_send_request->set_sender
EXPORTING
i_sender = l_sender.
* 设置收件人
LOOP AT it_mailaccept.
CONCATENATE it_mailaccept-name '@XXXXX.COM' INTO i_email.
TRANSLATE i_email TO LOWER CASE.
l_recipient = cl_cam_address_bcs=>create_internet_address( i_email ).
CALL METHOD l_send_request->add_recipient
EXPORTING
i_recipient = l_recipient
i_express = 'X'
i_copy = ' '
i_blind_copy = ' '
i_no_forward = ' '.
ENDLOOP.
* 设置抄送人
LOOP AT it_mailaccept_copy.
CONCATENATE it_mailaccept_copy-name '@XXXXX INTO i_email.
TRANSLATE i_email TO LOWER CASE.
l_recipient = cl_cam_address_bcs=>create_internet_address( i_email ).
CALL METHOD l_send_request->add_recipient
EXPORTING
i_recipient = l_recipient
i_express = 'X'
i_copy = 'X'
i_blind_copy = ' '
i_no_forward = ' '.
ENDLOOP.
*& 立即发送
l_send_request->set_send_immediately( 'X' ).
*& 发送
CALL METHOD l_send_request->send( ).
COMMIT WORK.
CATCH cx_document_bcs INTO l_bcs_exception.
CATCH cx_send_req_bcs INTO l_send_exception.
CATCH cx_address_bcs INTO l_addr_exception.
ENDTRY.

SAP 邮件发送的更多相关文章

  1. .NET开发邮件发送功能的全面教程(含邮件组件源码)

    今天,给大家分享的是如何在.NET平台中开发“邮件发送”功能.在网上搜的到的各种资料一般都介绍的比较简单,那今天我想比较细的整理介绍下: 1)         邮件基础理论知识 2)         ...

  2. J2EE 邮件发送那些事儿

    距离自己写的关于java邮件发送的第一篇博客已经有很长一段时间了,现在回过头看看.虽然代码质量方面有待提高,整体结构也不怎样,但是基本思路和过程还是比较纯的.现在有空写写J2EE中邮件发送的开发,实际 ...

  3. 结合ABP源码实现邮件发送功能

    1. 前言 2. 实现过程 1. 代码图(重) 2.具体实现 2.1 定义AppSettingNames及AppSettingProvider 2.2 EmailSenderConfiguration ...

  4. SSH项目里面 忘记密码的邮件发送功能

    package com.xxx.util; import java.util.Date; import java.util.Properties; import javax.mail.Address; ...

  5. [UWP]UWP中获取联系人/邮件发送/SMS消息发送操作

    这篇博客将介绍如何在UWP程序中获取联系人/邮件发送/SMS发送的基础操作. 1. 获取联系人 UWP中联系人获取需要引入Windows.ApplicationModel.Contacts名称空间. ...

  6. java spring 邮件发送

    开发中经常会遇到发送邮件进行用户验证,或者其它推送信息的情况,本文基于spring,完成邮件的发送,主要支持普通文本邮件的发送,html文本邮件的发送,带附件的邮件发送,没有实现群发.多个附件发送等需 ...

  7. Java邮件发送与接收原理

    一. 邮件开发涉及到的一些基本概念 1.1.邮件服务器和电子邮箱 要在Internet上提供电子邮件功能,必须有专门的电子邮件服务器.例如现在Internet很多提供邮件服务的厂商:sina.sohu ...

  8. c#实现邮件发送链接激活

    2016-08-24 10:09:52 public void MailSend(string email) { MailMessage MyMail = new MailMessage(); MyM ...

  9. .Net(C#)最简单的邮件发送案例

    一.序言 刚开始接触邮件发送功能的时候,在网上找的资料都挺复杂的!对于新手入门有点难(至少对于本人来说,第一次接触的时候确实不容易).这里就写一段简单的邮箱发送代码,备忘,也给新手一个参考(相关类的字 ...

随机推荐

  1. 避免subList/subString陷阱

    避免subList/subString陷阱 java.util.List 接口提供了一个实例方法 List<E> subList(int fromIndex, int toIndex), ...

  2. 软件工程(GZSD2015)第三次作业

    时间: 2015/4/17-2015/4/23 基本要求: 在之前编写的四则运算程序基础之上做如下改进: 请参照教材Page57:4.2-4.3节中内容,修改原程序,使之符合 "代码风格和设 ...

  3. 结队编程-基于gui的四则运算生成器

    成员:卢少锐 201421123027.刘存201421033023 coding.net地址 1.需求分析:除了实现四则运算的功能外,还添加了计时器功能和语言选择功能 2.程序设计:这次作业是基于上 ...

  4. 【Alpha】Daily Scrum Meeting——Day3

    站立式会议照片 1.本次会议为第三次 Meeting会议: 2.本次会议于早上9:40在陆大楼召开,本次会议为30分钟讨论昨天的任务完成情况以及接下来的任务安排. 每个人的工作分配 成 员 昨天已完成 ...

  5. 201521123050 《Java程序设计》第8周学习总结

    1. 本周学习总结 2. 书面作业 1.List中指定元素的删除(题目4-1) 1.1 实验总结 在删除元素时,要注意后续元素位置的前移 2.统计文字中的单词数量并按出现次数排序(题目5-3) 2.1 ...

  6. 201521123053《Java课程设计》第七周学习总结

    1. 本章学习总结 2. 书面作业 Q1. ArrayList代码分析 1.1 解释ArrayList的contains源代码 答:代码如下 public boolean contains(Objec ...

  7. 201521123050 《Java程序设计》第13周学习总结

    1. 本周学习总结 2. 书面作业 1. 网络基础 1.1 比较ping www.baidu.com与ping cec.jmu.edu.cn,分析返回结果有何不同?为什么会有这样的不同? 对比可以看出 ...

  8. 201521123030 《Java程序设计》 第13周学习总结

    1. 本周学习总结 以你喜欢的方式(思维导图.OneNote或其他)归纳总结多网络相关内容. 2. 书面作业 1. 网络基础 1.1 比较ping www.baidu.com与ping cec.jmu ...

  9. 市场主流5款HTML5开发框架详解

    我们经常听见的前端框架是一个非常大的范词,因为前端框架都是基于JS.CSS.HTML5技术开发实现的,不过选择一个HTML5开发框架需要考虑哪些方面,首先就是需要什么样的功能,其次就是技术实现,不过当 ...

  10. Hibernate第一篇【介绍Hibernate,简述ORM,快速入门】

    前言 前面已经学过了Struts2框架了,紧接着就是学习Hibernate框架了-本博文主要讲解介绍Hibernate框架,ORM的概念和Hibernate入门 什么是Hibernate框架? Hib ...