ABAP-发送带有附件的HTML格式的邮件(即有超链接)

PS:可以先通过在线工具,将邮件内容直接转换成HTML的格式

原代码如下:

FORM send_mail USING iv_send_attachment TYPE boolean.

  DATA lo_send_request    TYPE REF TO cl_bcs.
  DATA lo_sender          TYPE REF TO if_sender_bcs.
  DATA lo_recipient       TYPE REF TO if_recipient_bcs.
  DATA lo_ex_bcs          TYPE REF TO cx_bcs.
  DATA lv_subject         TYPE string.
  DATA lv_subject_short   TYPE so_obj_des.
  DATA lo_document        TYPE REF TO cl_document_bcs.
  DATA lv_content         TYPE string.
  DATA lv_xstr            TYPE xstring.
  DATA lt_hex             TYPE solix_tab.
  DATA lv_result          TYPE os_boolean.
  DATA lv_new_line        TYPE string VALUE '<p><span>&nbsp;</span></p>'.
  DATA lv_endof_line      TYPE string VALUE '&nbsp;</span></p>'.
  DATA ls_receiver        TYPE ty_receiver.

  TRY.
      lv_subject_short = lv_subject = 'Reminder: Certified Statement Submission'.
      IF iv_send_attachment = abap_true.
        lv_subject_short = lv_subject = 'Summary: Certified Statement Submission'.
      ENDIF.
      lo_send_request = cl_bcs=>create_persistent( ).
      CALL METHOD lo_send_request->set_message_subject
        EXPORTING
          ip_subject = lv_subject.

      "Sender
      CALL METHOD cl_cam_address_bcs=>create_internet_address
        EXPORTING
          i_address_string = zcl_constants_util=>gc_mail_no_reply
          i_address_name   = 'NO-REPLY'
        RECEIVING
          result           = lo_sender.

      CALL METHOD lo_send_request->set_sender
        EXPORTING
          i_sender = lo_sender.

**********************************************************************
      "Receiver
      IF iv_send_attachment = abap_true.
        CLEAR gt_receiver.
        LOOP AT s_email[] ASSIGNING FIELD-SYMBOL(<email>).
          ls_receiver-smtp_addr = <email>-low.
          APPEND ls_receiver TO gt_receiver.
          CLEAR ls_receiver.
        ENDLOOP.
      ELSE.
        "Add CC receiver
        LOOP AT s_email[] ASSIGNING <email>.
          CLEAR ls_receiver.
          ls_receiver-smtp_addr = <email>-low.
          lo_recipient = cl_cam_address_bcs=>create_internet_address( ls_receiver-smtp_addr ).
          CALL METHOD lo_send_request->add_recipient(
              i_recipient = lo_recipient
              i_copy      = 'X' ).
        ENDLOOP.
      ENDIF.

      CLEAR lo_recipient.
      LOOP AT gt_receiver ASSIGNING FIELD-SYMBOL(<receiver>).
        lo_recipient = cl_cam_address_bcs=>create_internet_address( <receiver>-smtp_addr ).
        CALL METHOD lo_send_request->add_recipient
          EXPORTING
            i_recipient = lo_recipient
            i_express   = 'X'.
      ENDLOOP.

**********************************************************************
      CONCATENATE '<html>'
      '<p><span>Dear Sirs,</span></p>'
      lv_new_line

      '<p><span>Please be reminded that pursuant to the terms of the Tenancy Agreement, '
      'you are required to submit a statement as to the actual amount of Gross Receipts '
      'of your business for the preceding calendar year, '
      'which statement shall be certified by the Approved Auditors/External Accountants '
      '(the "Certified Statement") at your sole cost. '
      'The Certified Statement should be submitted on or before 30 June of each year.' lv_endof_line

      lv_new_line
      '<p><span>Please submit your Certified Statement to our designated email address: '
      '<a href=xxx"">xxx</a>.' lv_endof_line

      lv_new_line
      '<p><span>If you have any questions or need further clarification about this requirement, '
      'please do not hesitate to contact our Ms. Vivian Fok at 2629 7931.' lv_endof_line

      lv_new_line
      '<p><span>We appreciate your immediate attention to this matter. Thank you for your understanding and cooperation.' lv_endof_line

      lv_new_line
      '<p><span>Regards,</span></p>'
      '<p><span>Commercial Letting Team</span></p>'
      '</html>'
      INTO lv_content RESPECTING BLANKS.

**********************************************************************

      CALL FUNCTION 'SCMS_STRING_TO_XSTRING'
        EXPORTING
          text   = lv_content
        IMPORTING
          buffer = lv_xstr
        EXCEPTIONS
          failed = 1
          OTHERS = 2.

      CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'
        EXPORTING
          buffer     = lv_xstr
        TABLES
          binary_tab = lt_hex.

      CALL METHOD cl_document_bcs=>create_document
        EXPORTING
          i_type    = 'HTM'
          i_hex     = lt_hex
          i_subject = lv_subject_short
        RECEIVING
          result    = lo_document.

**********************************************************************
      "add attachment
      IF iv_send_attachment = abap_true.
        TRY.
            PERFORM get_binary_table.
            CALL METHOD lo_document->add_attachment(
                i_attachment_type    = 'EXT'
                i_attachment_subject = lv_subject_short && '.xlsx'
                i_attachment_size    = gv_size
                i_att_content_hex    = gt_binary_table ).
          CATCH cx_salv_msg.
        ENDTRY.
      ENDIF.
**********************************************************************

      CALL METHOD lo_send_request->set_document( lo_document ).
      CALL METHOD lo_send_request->send(
        EXPORTING
          i_with_error_screen = 'X'
        RECEIVING
          result              = lv_result ).

      IF lv_result = 'X'.
        COMMIT WORK.
      ELSE.
        ROLLBACK WORK.
      ENDIF.

    CATCH cx_bcs INTO lo_ex_bcs.
  ENDTRY.

ENDFORM.

FORM get_binary_table.
  TRY.
      cl_salv_table=>factory(
        IMPORTING
          r_salv_table = gr_table
        CHANGING
          t_table      = gt_contract ).

      gv_xstring = gr_table->to_xml( if_salv_bs_xml=>c_type_xlsx ).
      CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'
        EXPORTING
          buffer        = gv_xstring
        IMPORTING
          output_length = gv_xlen
        TABLES
          binary_tab    = gt_binary_table.
      gv_size = gv_xlen.
    CATCH cx_salv_msg.
  ENDTRY.
ENDFORM.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值