`
Daniel_Fang
  • 浏览: 46313 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

邮件发送功能

阅读更多

      在SAP中我们可以配置STMP邮件功能,可以通过SOST来查看邮件状态,在编码中可用FM SO_DOCUMENT_SEND_API1 、SO_NEW_DOCUMENT_ATT_SEND_API1通过编码的方式来发送邮件以及邮件附件。在定义附件表时用solisti1,其长度为Char255,实际中我们导出的每一行记录都会超出这个长度。对XLS格试的附件我们可以用Excel的分隔标签来解决这个问题,对于文字乱码我们可以在附件加charset=utf-16le解决此类问题。同样,也适用于其他类似的乱码问题。

 

 constants: c_tab  type c value cl_abap_char_utilities=>horizontal_tab,
            c_cret type c value cl_abap_char_utilities=>cr_lf,
            c_mimetype type char64
                       value 'APPLICATION/MSEXCEL;charset=utf-16le'.

 

 data:   v_xattach type xstring,

         it_binary_attach type solix_tab.

 

*---------------------------------------------------------------------------------

* Convert the internal data to XString

*----------------------------------------------------------------------------------

 data: lc_descr_ref type ref to cl_abap_structdescr,
         lv_value     type char128,
         lv_temp      type string,
         lv_mid       type string,
         lv_tabix     type sy-tabix.

   field-symbols: <fs_intable>  type any.
   field-symbols: <intable_wa>  type abap_compdescr.

 

   loop at it_table.

     lv_tabix = sy-tabix.

     clear lv_temp.
     lc_descr_ref ?= cl_abap_typedescr=>describe_by_data( it_table ).
     loop at lc_descr_ref->components assigning <intable_wa>.
       assign component sy-tabix of structure  in_table to <fs_table>.
       lv_value = <fs_table>.
       condense lv_value.
       if sy-tabix = 1.
         lv_temp = lv_value.
         continue.
       endif.
       concatenate lv_temp lv_value
              into lv_temp separated by c_tab.
     endloop.

     concatenate lv_mid lv_temp c_cret into lv_mid.

   endloop.

*  Convert string to xstring type
*  'APPLICATION/MSEXCEL;charset=utf-16le'
   call function 'SCMS_STRING_TO_XSTRING'
     exporting
       text                = lv_mid
       mimetype       = c_mimetype
     importing
       buffer             = v_xattach
     exceptions
       failed              = 1
       others            = 2.

*  Add the file header for utf-16le.             .
   if sy-subrc = 0.
     concatenate cl_abap_char_utilities=>byte_order_mark_little
                 v_xattach into v_xattach in byte mode.
   endif.

   call function 'SCMS_XSTRING_TO_BINARY'
     exporting
       buffer          = v_xattach
     tables
       binary_tab  = it_binary_attach.

*---------------------------------------------------------------------------------

*Send Email

*----------------------------------------------------------------------------------

   data: lv_title        type so_obj_des,             " Email Title
            lv_email      type adsmtp-smtp_addr,  " Receiver
            lv_attitle     type char50.                     " Attachment Title

   data: send_request  type ref to     cl_bcs,
             document        type ref to     cl_document_bcs,
             conlengths      type               so_obj_len,
             html                 type table of w3html,  
             sender_id        type ref to     if_sender_bcs,
             recipient          type ref to     if_recipient_bcs,
             cc_recipient     type ref to     if_recipient_bcs,
             sent_to_all      type              os_boolean,
             bcs_exception type ref to     cx_bcs,
            bcs_message   type              string.

   clear:   lv_email,
               lv_title,
               html.      " Email Body Content with html format

   try.
*     request email function
       clear send_request.
       send_request = cl_bcs=>create_persistent( ).

*     Create the content of email
       clear document .
       document  =  cl_document_bcs=>create_document(
       i_type    =  'HTM'
       i_text    =  html
       i_length  =  conlengths
       i_subject =  lv_title ).

*     Add Attachment
       call method document->add_attachment
         exporting
           i_attachment_type      = 'XLS'
           i_attachment_subject = lv_attitle
           i_att_content_hex      = it_binary_attach.

*     Add document to send request
       call method send_request->set_document( document ).
       clear recipient.

         recipient =
           cl_cam_address_bcs=>create_internet_address( lv_email ).
*        Add recipient with its respective attributes to send request
         call method send_request->add_recipient
           exporting
             i_recipient = recipient
             i_express   = 'X'.

*     E-mail
       call method send_request->set_status_attributes
         exporting
           i_requested_status = 'E'
           i_status_mail           = 'E'.
       call method send_request->set_send_immediately( 'X' ).

*      Send document
       call method send_request->send(
        exporting
        i_with_error_screen = 'X'
        receiving
        result = sent_to_all ).
       if sent_to_all = 'X' and sy-batch <> 'X'.
         message 'Send Successfully' type 'I'.
       endif.

       commit work.

     catch cx_bcs into bcs_exception.
       bcs_message = bcs_exception->get_text( ).
       if sy-batch <> 'X'.
         message bcs_exception type 'E'.
       else.
         write: bcs_message.
       endif.
       exit.
   endtry.

分享到:
评论

相关推荐

    asp.net实现邮件发送功能

    在ASP.NET中实现邮件发送功能,主要依赖于System.Net.Mail命名空间中的类,这允许我们直接通过代码发送电子邮件。下面将详细介绍如何在ASP.NET中实现邮件发送功能。 首先,我们需要引入必要的命名空间,这通常是在...

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

    .NET框架为开发者提供了丰富的工具和库来实现邮件发送功能,本教程将全面解析如何在.NET环境中构建邮件发送功能,同时附带邮件组件源码供学习参考。邮件发送是应用程序中常见的需求,例如发送注册确认邮件、系统通知...

    .NET实现邮件发送功能的简单例子

    .NET实现邮件发送功能的简单例子,所用语言为VB.NET,适合初学者下载使用。

    java实现发送邮件功能源码+jar

    Java 实现邮件发送功能是许多开发者在开发过程中需要用到的基础技术之一。邮件发送功能不仅可以用于邮箱验证,例如在用户注册时确认邮箱的有效性,还可以用于发送系统通知、定期报告或者客户服务等场景。本教程将...

    java实现邮件发送功能

    在Java编程语言中,实现邮件发送功能主要依赖于JavaMail API。这个API提供了一系列的类和接口,使得开发者能够方便地构建电子邮件并将其发送到指定的SMTP(简单邮件传输协议)服务器。邮件发送功能不仅包括单个收件...

    实现邮件发送功能jar包

    在Java编程环境中,为了实现邮件发送功能,开发者通常会依赖特定的库或jar包。"实现邮件发送功能jar包"正是这样一个工具,它允许程序员通过编写代码来发送邮件,包括QQ邮件在内的各种邮件服务。这个jar包包含了处理...

    Grails 3开发邮件发送功能

    在当前的IT开发过程中,邮件发送功能是一个基础而广泛应用的功能,尤其在Web开发、在线服务以及日常的系统运维中。Grails作为一个全栈的、基于Groovy语言的Web应用开发框架,提供了一套较为简便的方式来集成和实现...

    SpringBoot整合ActiveMQ(消息中间件)实现邮件发送功能

    在本项目中,"SpringBoot整合ActiveMQ(消息中间件)实现邮件发送功能"是一个典型的企业级应用示例,它展示了如何将SpringBoot框架与Apache ActiveMQ集成,以实现基于消息队列的邮件发送服务。下面我们将详细探讨这个...

    qq邮件发送功能

    QQ邮件发送功能是一种常见的电子邮件通信方式,特别是在个人和小型企业中。通过QQ邮箱,用户可以利用SMTP(Simple Mail Transfer Protocol)服务发送邮件。SMTP是互联网上标准的邮件传输协议,它允许用户通过邮件...

    一组实现邮件发送功能的C++封装类SMailer

    本篇文章将深入探讨"SMailer"这一C++封装类,它是用来实现邮件发送功能的。 首先,`SMailer`类很可能是基于SMTP(Simple Mail Transfer Protocol)协议设计的。SMTP是互联网上用于发送电子邮件的标准协议,允许用户...

    PHP邮件发送功能

    当我们需要实现与用户更直接、灵活的沟通时,邮件发送功能就显得尤为重要。本篇文章将详细探讨如何在PHP中实现邮件发送功能,以及在实际项目开发中的应用。 首先,我们需要了解PHP中的邮件发送原理。PHP的mail()...

    C#邮件发送功能控件

    在C#编程环境中,开发邮件发送功能是一项常见的任务,它涉及到使用SMTP(Simple Mail Transfer Protocol)服务来传递电子邮件。C#提供了内置的System.Net.Mail命名空间,为开发者提供了方便的邮件发送API。在这个...

    java 邮件发送功能

    Java邮件发送功能是一种常见的编程需求,特别是在企业级应用中,用于发送通知、确认信息或自动报告等。在Java中,我们可以使用JavaMail API来实现这个功能。JavaMail API是一个开源库,提供了丰富的类和接口,使得...

    java工程邮件发送功能的实现.zip

    Java工程中的邮件发送功能是开发过程中常见的需求,它允许程序自动发送电子邮件,通常用于通知、报表、客户服务等场景。在Java中,我们可以使用JavaMail API来实现这一功能。本文将详细探讨如何在Java工程中实现邮件...

    实现邮件发送功能的c++代码(c++经典案例)

    在C++编程中,实现邮件发送功能涉及到网络通信、数据编码和类的设计等多个知识点。这里,我们将深入探讨这个经典案例中的关键技术和原理。 首先,我们要理解C++如何处理网络通信。在C++中,最常用的是`socket`编程...

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

    在.NET开发中,实现邮件发送功能是一项常见的任务,它能够帮助开发者进行自动化通知、客户服务、数据报告等。本文将提供一个全面的教程,包括邮件的基础理论、.NET类库的使用,以及一个自开发的邮件发送组件——...

    spring实现邮件发送功能+ssm+javamil

    在本文中,我们将深入探讨如何使用Spring框架实现邮件发送功能,特别关注SSM(Spring、Spring MVC、MyBatis)和JavaMail的整合。对于初学者来说,这是一个基础且易于理解的教程,只需要遵循简单的步骤就能成功实现...

    C#实现邮件发送功能的源码

    在C#编程环境中,实现邮件发送功能是一项常见的需求,尤其对于开发企业级应用或系统集成时,例如自动通知、报表发送等场景。本资源提供的"邮件发送"源码,可以帮助开发者快速构建邮件发送功能,包括添加附件、删除...

    C# 邮件发送功能(含多附件上传)

    综上所述,"C# 邮件发送功能(含多附件上传)"项目涵盖了C#编程、Windows Forms界面设计、SMTP邮件发送以及文件操作等多个核心知识点,对于学习和实践C#开发的初学者来说,是一个很好的学习资源。通过深入理解并实践...

Global site tag (gtag.js) - Google Analytics