邮件发送程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据元素:
代码:
FUNCTION z_excel_send_mail.
*"----------------------------------------------------------------------
*"*"Local interface:
*" IMPORTING
*" REFERENCE(I_SUBJECT) TYPE SO_OBJ_DES OPTIONAL
*" REFERENCE(I_MAILBODY) TYPE BCSY_TEXT OPTIONAL
*" REFERENCE(I_ATTACHMENT_SUBJECT) TYPE SOOD-OBJDES OPTIONAL *" REFERENCE(I_ACK) TYPE CHAR1 DEFAULT SPACE
*" REFERENCE(IT_FIELDCAT) TYPE SLIS_T_FIELDCAT_ALV OPTIONAL *" VALUE(I_ATTACHMENT_TYPE) TYPE SO_OBJ_TP DEFAULT 'xls'
*" TABLES
*" I_EMAIL_LIST STRUCTURE ZEMAIL_LIST
*" I_DATA
*" EXCEPTIONS
*" ERROR
*"----------------------------------------------------------------------
* BCS data
DATA send_request TYPE REF TO cl_bcs.
DATA body_length TYPE so_obj_len.
DATA document TYPE REF TO cl_document_bcs.
DATA recipient TYPE REF TO if_recipient_bcs.
DATA: bcs_exception TYPE REF TO cx_bcs.
DATA sent_to_all TYPE os_boolean.
DATA: requested_status TYPE bcs_rqst VALUE 'N'.
DATA: binary_content TYPE solix_tab.
DATA: size TYPE so_obj_len.
DATA: l_lines TYPE i.
IF i_email_list[] IS INITIAL.
"邮件接收地址不能为空.
MESSAGE e056(zmm_msg) RAISING error.
ENDIF.
* 创建EXCEL内容
PERFORM create_content TABLES i_data USING it_fieldcat
CHANGING binary_content size.
* ------------ 调用 BCS 接口 ----------------------------------
TRY.
* ---------- 创建和发送请求 ----------------------
send_request = cl_bcs=>create_persistent( ).
IF i_ack = space.
* 控制状态,如:送达到对方,对方读取
CALL METHOD send_request->set_status_attributes
EXPORTING
i_requested_status = requested_status
i_status_mail = 'N'.
ENDIF.
"邮件标题和正文
CLEAR l_lines.
l_lines = LINES( i_mailbody[] ).
body_length = l_lines * 255.
* ---------- 创建内容 ----------------------------------------
document = cl_document_bcs=>create_document(
i_type = 'RAW'
i_text = i_mailbody "邮件体,正文
i_length = body_length
i_subject = i_subject )."邮件标题
"添加附件
document->add_attachment(
i_attachment_type = i_attachment_type "附件类型
i_attachment_subject = i_attachment_subject "附件名称
i_attachment_size = size
i_att_content_hex = binary_content ).
* 添加邮件内容到发送请求
send_request->set_document( document ).
* ---------- 获取收件人地址 ----------------------
LOOP AT i_email_list.
recipient = cl_cam_address_bcs=>create_internet_address(
i_address_string = i_email_list-smtp_addr ).
* 添加收件人地址到发送请求中
send_request->add_recipient( i_recipient = recipient ).
ENDLOOP.
* --------- 设置为快速发送方式--------------------------
send_request->set_send_immediately( 'X' ).
* ---------- 开始发送 ---------------------------------------
sent_to_all = send_request->send( i_with_error_screen = 'X' ).
IF sent_to_all = 'X'.