在asp中发送邮件 表单提交到邮箱 表单发送到邮箱
SAP邮件发送

一、***************************************在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 char64value '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_valueinto 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'exportingtext = lv_midmimetype = c_mimetypeimportingbuffer = v_xattachexceptionsfailed = 1others = 2.* Add the file header for utf-16le. .if sy-subrc = 0.concatenate cl_abap_char_utilities=>byte_order_mark_littlev_xattach into v_xattach in byte mode.endif.call function 'SCMS_XSTRING_TO_BINARY'exportingbuffer = v_xattachtablesbinary_tab = it_binary_attach.*---------------------------------------------------------------------------------*Send Email*----------------------------------------------------------------------------------data: lv_title type so_obj_des, " Email Titlelv_email type adsmtp-smtp_addr, " Receiverlv_attitle type char50. " Attachment Titledata: 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 formattry.* request email functionclear send_request.send_request = cl_bcs=>create_persistent( ).* Create the content of emailclear document .document = cl_document_bcs=>create_document(i_type = 'HTM'i_text = htmli_length = conlengthsi_subject = lv_title ).* Add Attachmentcall method document->add_attachmentexportingi_attachment_type = 'XLS'i_attachment_subject = lv_attitlei_att_content_hex = it_binary_attach.* Add document to send requestcall 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 requestcall method send_request->add_recipientexportingi_recipient = recipienti_express = 'X'.* E-mailcall method send_request->set_status_attributesexportingi_requested_status = 'E'i_status_mail = 'E'.call method send_request->set_send_immediately( 'X' ).* Send documentcall method send_request->send(exportingi_with_error_screen = 'X'receivingresult = 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.二、SAP OFFCIE功能发送邮件SAP做为自成一体的系统,其开发环境有着丰富的资源,其中就包括发送邮件的SAP Office 组件。
百度文库-SAP发送邮件

采购订单发送邮件:截图如下:代码如下:ZMMR099:********************************************************************* ****Program name: ZMMR099**Description : PO SEND MAIL**Date/Autohr :********************************************************************* ***** M O D I F I C A T I O N L O G********************************************************************* ***** ChangeDate Programmer Request Description** ========== ========== ========== =========================*********************************************************************** ***REPORT ZMMR099NO STANDARD PAGE HEADINGLINE-SIZE 255LINE-COUNT 255.*** Global Data declearINCLUDE ZMMR099TOP.INCLUDE ZMMR099F01.*==================================================================== ==** Selection Screen Events*==================================================================== ==**** maintain selection screen outputAT SELECTION-SCREEN OUTPUT.*** F4 value help*AT SELECTION-SCREEN ON VALUE-REQUEST for <para/sel-opt>.*** check input dataAT SELECTION-SCREEN.*AT SELECTION-SCREEN ON <f>.*AT SELECTION-SCREEN ON BLOCK <>.****CHECK ON SELECT SCREEN INPUT*==================================================================== ==** Report Events*==================================================================== ==**** initial dataINITIALIZATION.clear: ADRNR2,SUPP_NAME2 ,SUPP_NAMECO ,SUPP_STR1 , "street2 SUPP_STR2 , "street3 SUPP_STREET,SUPP_CITY ,SUPP_CN ,SUPP_CN_NAME ,SUPP_ALL ,SUPP_FRISTNAME ,SUPP_LASTNAME ,SUPP_ANRED ,SUPP_PRSNR ,TEL_NUMBER ,TEL_EXTENS ,SUPP_TEL ,ADRNR ,DELV_NAME1 ,DELV_NAME2 ,DELV_STR1 ,DELV_STR2 ,DELV_STREET ,DELV_CITY ,DELV_CN ,DELV_CN_NAME ,DELV_FRISTNAME ,DELV_LASTNAME ,DELV_ANRED ,DELV_PRSNR ,TEL_NUMBER1 ,TEL_EXTENS1 ,DELV_TEL ,PUR_TOTAL ,TAX_TOTAL ,NET_TOTAL ,DEL_PLACE ,HEAD_LINE ,REMARK ,ITEM_LINE,TDNAME .*** prepare report dataSTART-OF-SELECTION."显示清单用于显示当前所抓取的所有的清单PERFORM SHOW_LIST.*** output reportEND-OF-SELECTION.*==================================================================== ==** List Events*==================================================================== ==**** page headerTOP-OF-PAGE.*** page header after first listTOP-OF-PAGE DURING LINE-SELECTION.*** page footerEND-OF-PAGE.*** when double clickAT LINE-SELECTION.*** when click some icon (function code)*at user-command.Include的代码如下:ZMMR099TOP:*&---------------------------------------------------------------------**& 包含 ZMMR099TOP*&---------------------------------------------------------------------*TABLES: EKKO , EKPO , NAST ,TNAPR.data XSCREEN(1) type C.data GS_PO_HEAER like ZMPO_HERDER.data GS_PO_HEAER1 like ZMPO_HERDER occurs 0 with header line .data: LT_ZPO_ITEM like ZMPO_ITEM occurs 0 with header line.data: GI_RETCODE type I,ADRNR2 type T001W-ADRNR,SUPP_NAME1 like ADRC-NAME1,SUPP_NAME2 like ADRC-NAME1,******************************************LIFNR like LFA1-LIFNR,UKURS like TCURR-UKURS,******************************************SUPP_NAMECO like ADRC-NAME_CO,SUPP_STR1 like ADRC-STR_SUPPL1,SUPP_STR2 like ADRC-STR_SUPPL1,SUPP_STREET like ADRC-STREET,SUPP_CITY like ADRC-CITY1,SUPP_CN like ADRC-COUNTRY,SUPP_CN_NAME like T005T-LANDX,SUPP_ALL type STRING,"SUPP_FRISTNAME like KNVK-NAMEV,SUPP_LASTNAME like KNVK-NAME1,SUPP_ANRED like KNVK-ANRED,SUPP_PRSNR like KNVK-PRSNR,TEL_NUMBER like ADR2-TEL_NUMBER,TEL_EXTENS like ADR2-TEL_EXTENS,FAX_NUMBER like ADRC-FAX_NUMBER,SUPP_TEL like KNVK-TELF1,ADRNR type T001W-ADRNR,KTOKK like LFA1-KTOKK,DELV_NAME1 like ADRC-NAME1,DELV_NAME2 like ADRC-NAME1,DELV_CO like ADRC-NAME_CO,DELV_STR1 like ADRC-STR_SUPPL1, "street2 DELV_STR2 like ADRC-STR_SUPPL1, "street3 DELV_STREET like ADRC-STREET,DELV_CITY like ADRC-CITY1,DELV_CN like ADRC-COUNTRY,DELV_CN_NAME like T005T-LANDX,DELV_FRISTNAME like KNVK-NAMEV,DELV_LASTNAME like KNVK-NAME1,DELV_ANRED like KNVK-ANRED,DELV_PRSNR like KNVK-PRSNR,TEL_NUMBER1 like ADR2-TEL_NUMBER,TEL_EXTENS1 like ADR2-TEL_EXTENS,DELV_TEL like KNVK-TELF1,PUR_TOTAL like EKPO-NETWR,TAX_TOTAL like EKPO-NETWR,NET_TOTAL like EKPO-NETWR,COM_PLACE like ADRC-STREET,DEL_PLACE like LFA1-STRAS,HEAD_LINE like TLINE occurs 0 with header line,REMARK like TLINE-TDLINE ,ITEM_LINE like TLINE occurs 0 with header line,TDNAME like RSTXT-TDNAME,GAP type C value ' ',GAP1 type C value '-',POMENGE1 like EKPO-MENGE,POMENGE2 like EKPO-MENGE.data:AUTH_BUKRS like EKKO-BUKRS.data: ITCURR like TCURR occurs 0 with header line. data I_GDATU like EKKO-BEDAT."sy-datum.data: BEGIN OF g_itab OCCURS 0,EBELN like ekko-ebeln,EKORG LIKE EKKO-EKORG,END OF g_itab.TYPE-POOLS: slis.*TYPES: BEGIN OF wa_EKKO,* mark type c,* ebeln TYPE EKKO-ebeln,* ekorg TYPE EKKO-ekorg,* ekgrp type ekko-ekgrp ,* bedat type ekko-bedat ,* lifnr type ekko-lifnr ,* BSART type EKKO-BSART ,* END OF wa_EKKO.*data: BEGIN OF it_EKKO OCCURS 0,mark type c,ebeln TYPE EKKO-ebeln,ekorg TYPE EKKO-ekorg,ekgrp type ekko-ekgrp ,bedat type ekko-bedat ,lifnr type ekko-lifnr ,BSART type EKKO-BSART ,END OF it_EKKO."DATA: it_EKKO TYPE TABLE OF wa_EKKO ,data:l_pos TYPE i VALUE 1.DATA: gt_fieldcat TYPE slis_t_fieldcat_alv,wa_fieldcat TYPE slis_fieldcat_alv.data gt_events TYPE slis_t_event.data: P_EBELN like ekko-ebeln.data: LS_JOB_INFO1 type SSFCRESCL.data :job_output_options TYPE ssfcresop.data: OBJBIN like SOLISTI1 occurs 10 with header line,DOCDATA like SODOCCHGI1,OBJTXT like SOLISTI1 occurs 10 with header line,OBJPACK like SOPCKLSTI1 occurs 1 with header line,RECLIST like SOMLRECI1 occurs 1 with header line,OBJHEAD like SOLISTI1 occurs 1 with header line.data: i_pdf_tab LIKE TABLE OF tline WITH HEADER LINE.data: g_filesize TYPE i.data: TAB_LINES type I.data: P_XSCRN TYPE c VALUE 'X'.SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.SELECT-OPTIONS: s_ebeln FOR ekko-ebeln ,s_ekorg FOR ekko-ekorg ,s_ekgrp FOR ekko-ekgrp ,s_bedat FOR ekko-bedat ,s_lifnr FOR ekko-lifnr ,S_BSART FOR EKKO-BSART ."parameters P_XSCRN as checkbox default 'X'.SELECTION-SCREEN END OF BLOCK b1.Include ZMMR099F01代码如下:*&---------------------------------------------------------------------**& 包含 ZMMR099F01*&---------------------------------------------------------------------*FORM entry_neu USING return_code us_screen.DATA: li_retcode TYPE sy-subrc.xscreen = us_screen.PERFORM processing USING us_screenCHANGING li_retcode.IF li_retcode NE 0.return_code = 1.ELSE.return_code = 0.ENDIF.ENDFORM. "entry_neu*&---------------------------------------------------------------------**& Form processing*&---------------------------------------------------------------------** text*----------------------------------------------------------------------** -->PROC_SCREEN text* -->CF_RETCODE text*----------------------------------------------------------------------*FORM processing USING proc_screenCHANGING cf_retcode.DATA: lc_fm_name TYPE rs38l_fnam.DATA: ls_control_param TYPE ssfctrlop.DATA: ls_composer_param TYPE ssfcompop.DATA: lc_formname TYPE tdsfname.* Clear variantCLEAR gs_po_heaer.* SmartForm from customizing table TNAPRlc_formname = tnapr-sform.* select print dataPERFORM get_data CHANGING cf_retcode.READ TABLE gs_po_heaer1 INDEX 1.MOVE-CORRESPONDING gs_po_heaer1 TO gs_po_heaer.* delete adjacent duplicates from gs_po_header comparing eleln.IF cf_retcode = 0.PERFORM set_print_param CHANGING ls_control_paramls_composer_paramcf_retcode.ENDIF.IF cf_retcode = 0.* determine smartform function module for invoiceCALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'EXPORTINGformname = lc_formnameIMPORTINGfm_name = lc_fm_nameEXCEPTIONSno_form = 1no_function_module = 2OTHERS = 3.IF sy-subrc <> 0.* error handlingcf_retcode = sy-subrc.PERFORM protocol_update.ENDIF.ENDIF.CLEAR ls_job_info1.CALL FUNCTION lc_fm_namecontrol_parameters = ls_control_paramoutput_options = ls_composer_paramuser_settings = spacegs_po_heaer = gs_po_heaerpur_total = pur_totaltax_total = tax_totalnet_total = net_totaldel_place = del_placeremark = remarkIMPORTINGjob_output_info = ls_job_info1TABLESit_zpo_item = lt_zpo_item[]EXCEPTIONSformatting_error = 1internal_error = 2send_error = 3user_canceled = 4OTHERS = 5.* ls_control_param-no_open = 'X'.break abap01.IF sy-subrc <> 0.* error handlingcf_retcode = sy-subrc.PERFORM protocol_update.* get SmartForm protocoll and store it in the NAST protocoll PERFORM add_smfrm_prot.ENDIF.*ls_control_param-getotf = 'X'.ls_control_param-no_dialog = 'X'.ls_control_param-langu = sy-langu.CLEAR ls_job_info1.CALL FUNCTION lc_fm_namecontrol_parameters = ls_control_paramoutput_options = ls_composer_paramuser_settings = spacegs_po_heaer = gs_po_heaerpur_total = pur_totaltax_total = tax_totalnet_total = net_totaldel_place = del_placeremark = remarkIMPORTINGjob_output_info = ls_job_info1TABLESit_zpo_item = lt_zpo_item[]EXCEPTIONSformatting_error = 1internal_error = 2send_error = 3user_canceled = 4OTHERS = 5.PERFORM savapdf.CLEAR gs_po_heaer.ENDFORM. "PROCESSING*&---------------------------------------------------------------------**& Form set_print_param*&---------------------------------------------------------------------** text*----------------------------------------------------------------------** -->CS_CONTROL_PARAM text* -->CS_COMPOSER_PARAM text* -->CF_RETCODE text*----------------------------------------------------------------------*FORM set_print_param CHANGING cs_control_param TYPE ssfctrlopcs_composer_param TYPE ssfcompopcf_retcode TYPE sy-subrc.DATA: ls_itcpo TYPE itcpo.DATA: lf_repid TYPE sy-repid.DATA: lf_device TYPE tddevice.cs_composer_param-tddest = 'LP01'.cs_composer_param-tdimmed = 'X'.IF xscreen = 'X'.cs_composer_param-tdnoprint = 'X'.ENDIF.cs_control_param-device = 'PRINTER'.* cs_control_param-device = 'MAIL'.cs_control_param-no_dialog = 'X'.cs_control_param-preview = xscreen.cs_control_param-langu = 'M'.ENDFORM. "set_print_param*&---------------------------------------------------------------------**& Form protocol_update*&---------------------------------------------------------------------** text*----------------------------------------------------------------------*FORM protocol_update .CHECK xscreen = space.CALL FUNCTION 'NAST_PROTOCOL_UPDATE'EXPORTINGmsg_arbgb = syst-msgidmsg_nr = syst-msgnomsg_ty = syst-msgtymsg_v1 = syst-msgv1msg_v2 = syst-msgv2msg_v3 = syst-msgv3msg_v4 = syst-msgv4EXCEPTIONSOTHERS = 1.ENDFORM. " protocol_update*&---------------------------------------------------------------------**& Form add_smfrm_prot*&---------------------------------------------------------------------** text*----------------------------------------------------------------------*FORM add_smfrm_prot .DATA: lt_errortab TYPE tsferror.FIELD-SYMBOLS: <fs_errortab> TYPE LINE OF tsferror.* get smart form protocollCALL FUNCTION 'SSF_READ_ERRORS'IMPORTINGerrortab = lt_errortab.* add smartform protocoll to nast protocollLOOP AT lt_errortab ASSIGNING <fs_errortab>.CALL FUNCTION 'NAST_PROTOCOL_UPDATE'EXPORTINGmsg_arbgb = <fs_errortab>-msgidmsg_nr = <fs_errortab>-msgnomsg_ty = <fs_errortab>-msgtymsg_v1 = <fs_errortab>-msgv1msg_v2 = <fs_errortab>-msgv2msg_v3 = <fs_errortab>-msgv3msg_v4 = <fs_errortab>-msgv4EXCEPTIONSOTHERS = 1.ENDLOOP.ENDFORM. " add_smfrm_prot*&---------------------------------------------------------------------**& Form protocol_update_spool*&---------------------------------------------------------------------** text*----------------------------------------------------------------------** -->SYST_MSGNO text* -->P_LS_SPOOLID text* -->P_SPACE1 text* -->P_SPACE2 text* -->P_SPACE3 text*----------------------------------------------------------------------*FORM protocol_update_spool USING syst_msgnop_ls_spoolidp_space1p_space2p_space3.syst-msgid = 'ME'.syst-msgno = syst_msgno.syst-msgv1 = p_ls_spoolid.CONDENSE syst-msgv1.CHECK xscreen = space.CALL FUNCTION 'NAST_PROTOCOL_UPDATE'EXPORTINGmsg_arbgb = syst-msgidmsg_nr = syst-msgnomsg_ty = syst-msgtymsg_v1 = syst-msgv1msg_v2 = p_space1msg_v3 = p_space2msg_v4 = p_space3EXCEPTIONSOTHERS = 1.ENDFORM. " protocol_update_spool*&---------------------------------------------------------------------**& Form get_data*&---------------------------------------------------------------------** text*----------------------------------------------------------------------** -->CF_RETCODE text*----------------------------------------------------------------------*FORM get_data CHANGING cf_retcode.DATA lv_ebeln LIKE ekko-ebeln.DATA: cnt(2) TYPE c,persno(10) TYPE c.IF nast-objky+10 NE space.nast-objky = nast-objky+16(10).ELSE.nast-objky = nast-objky.ENDIF.lv_ebeln = nast-objky.SELECT DISTINCT ekko~bukrs ekko~lifnr ekko~ebeln ekko~bsart ekko~ae datekko~inco1 ekko~inco2 ekpo~werks ekko~waers ekko~frgzu ekko~ ztermekko~ernam ekko~bedat ekko~ekorg ekko~ekgrp ekko~wkurs"汇率INTO CORRESPONDING FIELDS OF TABLE gs_po_heaer1FROM ekkoJOIN ekpo ON ekpo~ebeln = ekko~ebelnWHERE ekko~ebeln = lv_ebeln.LOOP AT gs_po_heaer1.SELECT SINGLE lgort INTO gs_po_heaer1-lgort FROM ekpo WHERE ekpo~ ebeln = gs_po_heaer1-ebeln.SELECT SINGLE bednr INTO gs_po_heaer1-bednr FROM eban WHERE eban~ ebeln = gs_po_heaer1-ebeln.SELECT SINGLE afnam INTO gs_po_heaer1-afnam FROM eban WHERE eban~ ebeln = gs_po_heaer1-ebeln.********************************************************************* ************************************SELECT SINGLE ukurs INTO gs_po_heaer1-ukurs FROM tcurr WHERE tcu rr~kurst EQ 'M'AND fcurr EQ 'USD' "从货币AND tcurr EQ gs_po_heaer1-waers "最终货币AND tcurr~gdatu <= gs_po_heaer1-bedatAND gdatu > i_gdatu.* *******************************IF gs_po_heaer1-bukrs = 1000.gs_po_heaer1-ztitel = '香港天惠有限公司'.ELSEIF gs_po_heaer1-bukrs = 3000.gs_po_heaer1-ztitel = '东莞添威电子制品有限公司'.ENDIF.**************************************************************************************************** *************************************MODIFY gs_po_heaer1.ENDLOOP.SELECT ekpo~ebeln ekpo~ebelp ekpo~matnr ekpo~ematn ekpo~txz01ekpo~menge ekpo~meins ekpo~netpr ekko~waers ekko~bsartekpo~netwr ekpo~peinh ekpo~mwskz ekpo~infnr ekpo~werksekpo~bukrs ekpo~bprme ekpo~bpumz ekpo~bpumn ekpo~zzsub_matnr ekpo~banfn ekpo~bednr ekpo~loekz ekpo~idnlf ekpo~zzdeudate* "EKET~MENGE EKET~EINDT* ekpo~umren ekpo~umrez ekpo~lmeinINTO CORRESPONDING FIELDS OF TABLE lt_zpo_itemFROM ekpoJOIN ekko ON ekpo~ebeln = ekko~ebeln* JOIN EKET ON EKET~EBELN = EKPO~EBELN AND EKET~EBELP = EKPO~EBELP WHERE ekpo~ebeln = lv_ebeln .* AND ekpo~loekz <> 'L'.CLEAR pur_total.CLEAR tax_total.CLEAR net_total.DESCRIBE TABLE lt_zpo_item LINES sy-tmaxl.IF sy-tmaxl = 0.MESSAGE i004(zmseg).STOP.ENDIF.LOOP AT lt_zpo_item.************************添加物料版次DATA: max_aennr(12) TYPE c.SELECT MAX( aeoi~aennr ) INTO max_aennr FROM aeoi WHERE aeoi~oitx t = '修改版本' AND aeoi~objkt = lt_zpo_item-matnr.SELECT SINGLE aeoi~revlv INTO lt_zpo_item-revlv FROM aeoi WHERE aeoi~aennr = max_aennr.******************************************CLEAR lt_zpo_item-atwrt. CLEAR lt_zpo_item-atwrt2. CLEAR lt _zpo_item-atwrt3.CLEAR lt_zpo_item-ematn. CLEAR lt_zpo_item-ematn2.IF lt_zpo_item-loekz = 'L'.lt_zpo_item-menge = 0.ENDIF.IF lt_zpo_item-zzsub_matnr = ''.SELECT SINGLE atwrt INTO lt_zpo_item-atwrtFROM auspWHERE objek = lt_zpo_item-matnrAND atinn = '0000000008'AND atwrt <> ''.SELECT SINGLE atwrt INTO lt_zpo_item-atwrt2FROM auspWHERE objek = lt_zpo_item-matnrAND atinn = '0000000034'AND atwrt <> ''.CONCATENATE lt_zpo_item-atwrt lt_zpo_item-atwrt2 INTO lt_zpo_it em-ematn2.* IF sy-subrc = 0.* lt_zpo_item-ematn = lt_zpo_item-atwrt.* ENDIF.CLEAR lt_zpo_item-atwrt.SELECT SINGLE atwrt INTO lt_zpo_item-atwrt3FROM auspWHERE objek = lt_zpo_item-matnrAND atinn = '0000000009'AND atwrt <> ''.IF sy-subrc = 0.CONCATENATE lt_zpo_item-atwrt3 ':' lt_zpo_item-ematn2 INTO l t_zpo_item-ematn2.ENDIF.ELSE.SELECT SINGLE atwrt INTO lt_zpo_item-atwrtFROM auspWHERE objek = lt_zpo_item-zzsub_matnrAND atinn = '0000000008'AND atwrt <> ''.SELECT SINGLE atwrt INTO lt_zpo_item-atwrt2FROM auspWHERE objek = lt_zpo_item-zzsub_matnrAND atinn = '0000000034'AND atwrt <> ''.CONCATENATE lt_zpo_item-atwrt lt_zpo_item-atwrt2 INTO lt_zpo_it em-ematn2.* IF sy-subrc = 0.* lt_zpo_item-ematn = lt_zpo_item-atwrt.* ENDIF.CLEAR lt_zpo_item-atwrt.SELECT SINGLE atwrt INTO lt_zpo_item-atwrt3FROM auspWHERE objek = lt_zpo_item-zzsub_matnrAND atinn = '0000000009'AND atwrt <> ''.IF sy-subrc = 0.CONCATENATE lt_zpo_item-atwrt3 ':' lt_zpo_item-ematn2 INTO l t_zpo_item-ematn2.ENDIF.ENDIF.SELECT SINGLE zeivr INTO lt_zpo_item-zeivrFROM maraWHERE matnr = lt_zpo_item-matnr.*when the currency is JPY,IF lt_zpo_item-waers = 'JPY'.lt_zpo_item-netpr = lt_zpo_item-netpr * 100.ENDIF.*when the currency is JPYCLEAR: pomenge1,pomenge2.SELECT b~maktx a~mfrpn a~wrkstINTO (lt_zpo_item-maktx,lt_zpo_item-mfrpn,lt_zpo_item-wrkst)FROM mara AS aJOIN makt AS b ON a~matnr = b~matnrWHERE a~matnr = lt_zpo_item-ematn.ENDSELECT.IF lt_zpo_item-peinh <> 0.lt_zpo_item-netpr = lt_zpo_item-netpr / lt_zpo_item-peinh.ENDIF.CLEAR:pomenge1,pomenge2.pomenge1 = lt_zpo_item-menge.IF frac( pomenge1 ) <> 0.lt_zpo_item-menge1 = pomenge1 .ELSE.lt_zpo_item-menge1 = trunc( pomenge1 ).ENDIF.pomenge2 = lt_zpo_item-menge * lt_zpo_item-bpumz / lt_zpo_item-bpumn.lt_zpo_item-netwr = pomenge2 * lt_zpo_item-netpr.IF frac( pomenge2 ) <> 0.lt_zpo_item-menge2 = pomenge2 .ELSE.lt_zpo_item-menge2 = trunc( pomenge2 ).ENDIF.lt_zpo_item-netpr1 = lt_zpo_item-netpr.lt_zpo_item-netwr1 = lt_zpo_item-netwr.CONDENSE lt_zpo_item-menge1.CONDENSE lt_zpo_item-menge2.CONDENSE lt_zpo_item-netpr1.CONDENSE lt_zpo_item-netwr1.CLEAR lt_zpo_item-item_tax.IF lt_zpo_item-mwskz = 'J0' OR lt_zpo_item-mwskz = 'Y0' OR lt_zpo _item-mwskz = 'Z0'.lt_zpo_item-item_tax = lt_zpo_item-netwr * 0.ENDIF.IF lt_zpo_item-mwskz = 'J1' OR lt_zpo_item-mwskz = 'Y1' OR lt_zpo _item-mwskz = 'Z1'.lt_zpo_item-tax_code = '17%'.lt_zpo_item-item_tax = lt_zpo_item-netwr * 17 / 100.ENDIF.IF lt_zpo_item-mwskz = 'J2' OR lt_zpo_item-mwskz = 'Z2'.lt_zpo_item-tax_code = '11%'.lt_zpo_item-item_tax = lt_zpo_item-netwr * 11 / 100.ENDIF.IF lt_zpo_item-mwskz = 'J3' OR lt_zpo_item-mwskz = 'Z3'.lt_zpo_item-tax_code = '7%'.lt_zpo_item-item_tax = lt_zpo_item-netwr * 7 / 100.ENDIF.IF lt_zpo_item-mwskz = 'J4' OR lt_zpo_item-mwskz = 'Z4'.lt_zpo_item-tax_code = '6%'.lt_zpo_item-item_tax = lt_zpo_item-netwr * 6 / 100.ENDIF.IF lt_zpo_item-mwskz = 'J5'.lt_zpo_item-tax_code = '4%'.lt_zpo_item-item_tax = lt_zpo_item-netwr * 4 / 100.ENDIF.IF lt_zpo_item-mwskz = 'Z5'.lt_zpo_item-tax_code = '3%'.lt_zpo_item-item_tax = lt_zpo_item-netwr * 3 / 100.ENDIF.lt_zpo_item-item_tax1 = lt_zpo_item-item_tax.lt_zpo_item-item_total = lt_zpo_item-item_tax + lt_zpo_item-netwr.CONDENSE lt_zpo_item-item_tax1.tax_total = tax_total + lt_zpo_item-item_tax.net_total = net_total + lt_zpo_item-netwr.pur_total = net_total + tax_total.*get po info textCLEAR tdname.* CONCATENATE LT_ZPO_ITEM-INFNR LT_ZPO_ITEM-BUKRS '0'* INTO TDNAME. " LT_ZPO_ITEM-WERKSCONCATENATE lt_zpo_item-ebeln lt_zpo_item-ebelpINTO tdname. " LT_ZPO_ITEM-WERKSCALL FUNCTION 'READ_TEXT'EXPORTINGclient = sy-mandtid = 'F01'language = '1'name = tdnameobject = 'EKPO'* ARCHIVE_HANDLE = 0* LOCAL_CAT = ' '* IMPORTING* HEADER =TABLESlines = item_lineEXCEPTIONSid = 1language = 2name = 3not_found = 4object = 5reference_check = 6wrong_access_to_archive = 7OTHERS = 8 .IF sy-subrc = 0.LOOP AT item_line.CONCATENATE lt_zpo_item-itemtext item_line-tdline INTOlt_zpo_item-itemtext.ENDLOOP.CLEAR item_line.ENDIF.IF lt_zpo_item-itemtext IS NOT INITIAL.CONCATENATE 'Remark: ' lt_zpo_item-itemtext INTO lt_zpo_item-itemtext.ENDIF.SELECT SINGLE eindt INTO lt_zpo_item-eindtFROM eket WHERE ebeln = lt_zpo_item-ebelnAND ebelp = lt_zpo_item-ebelp.********************************修改再计划日期为交货日期IF lt_zpo_item-zzdeudate IS NOT INITIAL.lt_zpo_item-eindt = lt_zpo_item-zzdeudate.ENDIF.PERFORM delete_zero USING lt_zpo_item-ebelp.MODIFY lt_zpo_item.CLEAR lt_zpo_item.ENDLOOP.LOOP AT gs_po_heaer1.*&gain header texttdname = gs_po_heaer1-ebeln.CALL FUNCTION 'READ_TEXT'EXPORTING* CLIENT = SY-MANDTid = 'F01'language = sy-languname = tdnameobject = 'EKKO'* ARCHIVE_HANDLE = 0* LOCAL_CAT = ' '* IMPORTING* HEADER =* OLD_LINE_COUNTER =TABLESlines = item_line EXCEPTIONSid = 1language = 2name = 3not_found = 4object = 5reference_check = 6wrong_access_to_archive = 7OTHERS = 8.IF sy-subrc = 0.READ TABLE item_line INDEX 1.MOVE item_line-tdline TO gs_po_heaer1-mrpno.ENDIF.SELECT SINGLE eknam smtp_addrINTO (gs_po_heaer1-eknam,gs_po_heaer1-smtp_addr2)FROM t024WHERE ekgrp = gs_po_heaer1-ekgrp.SELECT adrnrINTO adrnr2FROM t001wWHERE werks = gs_po_heaer1-werks.IF sy-subrc = 0.SELECT streetINTO gs_po_heaer1-addressFROM adrcWHERE addrnumber = adrnr2.ENDSELECT.ENDIF.ENDSELECT.SELECT adrnrINTO adrnrFROM lfa1WHERE lifnr = gs_po_heaer1-lifnr.ENDSELECT.SELECT name1 name2 city1 name_co str_suppl1 str_suppl2 country street tel_number fax_numberINTO (supp_name1,supp_name2,supp_city,supp_nameco,supp_str1, supp_str2,supp_cn,supp_street,tel_number,fax_number) FROM adrcWHERE addrnumber = adrnr.ENDSELECT.SELECT landxINTO supp_cn_nameFROM t005tWHERE spras = 'E'AND land1 = supp_cn.ENDSELECT.CONDENSE supp_name1.CONDENSE supp_name2.gs_po_heaer1-supp_co = supp_nameco.gs_po_heaer1-supp_strone = supp_str1.gs_po_heaer1-supp_strtwo = supp_str2.gs_po_heaer1-supp_tel = tel_number.gs_po_heaer1-supp_fax = fax_number.gs_po_heaer1-address = supp_street.CONCATENATE supp_street supp_city supp_cn_nameINTO gs_po_heaer1-supp_cn SEPARATED BY gap .CONCATENATE supp_name1 supp_name2 INTO gs_po_heaer1-supp_name SEPARATED BY gap.SELECT SINGLE namev name1 anred prsnrINTO (supp_fristname,supp_lastname,supp_anred,supp_prsnr)FROM knvkWHERE lifnr = gs_po_heaer1-lifnr.CONCATENATE supp_lastname supp_fristname INTO gs_po_heaer1-supp_c ontact.SELECT SINGLE koinh INTO gs_po_heaer1-koinh FROM lfbk WHERE lifnr = gs_po_heaer1-lifnr.SELECT SINGLE smtp_addr INTO gs_po_heaer1-smtp_addr1FROM adr6 WHERE addrnumber = adrnr.SELECT SINGLE text1INTO gs_po_heaer1-text1FROM t052uWHERE zterm = gs_po_heaer1-zterm.IF gs_po_heaer1-inco1 = space.SELECT SINGLE inco1 inco2INTO (gs_po_heaer1-inco1,gs_po_heaer1-inco2)FROM lfm1WHERE lifnr = gs_po_heaer1-lifnrAND ekorg = gs_po_heaer1-ekorg.ELSE.SELECT SINGLE bezei INTO gs_po_heaer1-inco2FROM tinctWHERE inco1 = gs_po_heaer1-inco1AND spras = '1'.ENDIF.CLEAR persno.SELECT SINGLE persnumber INTO persnoFROM user_addrpWHERE bname = gs_po_heaer1-ernam.IF sy-subrc = 0 AND gs_po_heaer1-smtp_addr2 = space.SELECT SINGLE smtp_addr INTO gs_po_heaer1-smtp_addr2FROM adr6WHERE persnumber = persno.ENDIF.CLEAR lt_zpo_item.READ TABLE lt_zpo_item WITH KEY ebeln = gs_po_heaer1-ebeln.IF sy-subrc = 0.gs_po_heaer1-banfn = lt_zpo_item-banfn.IF lt_zpo_item-tax_code NE space.CONCATENATE '(VAT' lt_zpo_item-tax_code ')' INTO gs_po_heaer1 -taxcode.ENDIF.ENDIF.CLEAR cnt.*************采购单版本DATA:BEGIN OF tcdpos,changenr LIKE cdpos-changenr,END OF tcdpos.DATA:it_cdpos LIKE tcdpos OCCURS 0 WITH HEADER LINE.SELECT changenr INTO CORRESPONDING FIELDS OF TABLE it_cdpos FROM cdposWHERE objectid = gs_po_heaer1-ebeln AND tabname = 'EKPO' AND ( fname = 'MENGE' OR fname = 'NETWR' OR fname = 'KEY' OR fname = 'LO EKZ' )."SELECT COUNT(*) INTO cnt FROM cdpos WHERE objectid = gs_po_heae r1-ebeln AND tabname = 'EKPO' AND ( fname = 'MENGE' OR fname = 'NET WR' ).DELETE ADJACENT DUPLICATES FROM it_cdpos .cnt = lines( it_cdpos ).CONCATENATE 'Rev.' ' ' cnt INTO gs_po_heaer1-count.MODIFY gs_po_heaer1.CLEAR gs_po_heaer1.ENDLOOP.ENDFORM. "get_data*&---------------------------------------------------------------------**& Form delete_zero*&---------------------------------------------------------------------** text*----------------------------------------------------------------------** -->P_P1 text*----------------------------------------------------------------------*FORM delete_zero USING p_p1.CALL FUNCTION 'BKK_DELETE_LEADING_ZERO'CHANGINGc_field = p_p1.ENDFORM. " delete_zero*&---------------------------------------------------------------------**& Form SHOW_LIST*&---------------------------------------------------------------------** text*----------------------------------------------------------------------** --> p1 text* <-- p2 text*----------------------------------------------------------------------*FORM show_list .SELECT ebeln ekorg ekgrp bedat lifnr FROM ekkoINTO CORRESPONDING FIELDS OF TABLE it_ekkoWHERE ebeln IN s_ebeln。
如何使用VBA实现自动化邮件发送

如何使用VBA实现自动化邮件发送自动化邮件发送是一项广泛应用于企业和个人工作中的任务。
VBA (Visual Basic for Applications)是一种用于自定义Microsoft Office应用程序的编程语言,它可以帮助我们实现自动化邮件发送的功能。
本文将介绍如何使用VBA编写自动化邮件发送的代码,并实现发送给多个收件人、附件添加等功能。
首先,我们需要打开Microsoft Outlook应用程序,并创建一个新的邮件。
通过以下VBA代码实现:```VBASub SendMail()Dim OutlookApp As Outlook.ApplicationDim MailItem As Outlook.MailItem'启动Outlook应用程序Set OutlookApp = New Outlook.Application'创建新邮件Set MailItem = OutlookApp.CreateItem(olMailItem)With MailItem'设置收件人.To = "收件人邮箱地址"'设置抄送.CC = "抄送人邮箱地址"'设置密送.BCC = "密送人邮箱地址"'设置主题.Subject = "邮件主题"'设置邮件内容.Body = "邮件内容"'添加附件.Attachments.Add "附件路径" '发送邮件.SendEnd With'释放对象Set OutlookApp = NothingSet MailItem = Nothing'显示提示信息MsgBox "邮件发送成功!"End Sub```在上述代码中,我们首先创建了一个Outlook应用程序对象`OutlookApp`和一个邮件对象`MailItem`。
通过VBA自动发送电子邮件

通过VBA自动发送电子邮件自动化程度越来越高的今天,通过编程语言实现自动化操作已经成为了一种常见的需求。
在日常工作中,我们经常需要发送电子邮件,而通过VBA(Visual Basic for Applications)自动发送电子邮件就是一种高效、方便的方式。
VBA是微软Office套件中的一种基于Microsoft Visual Basic的宏语言,可以帮助我们在Office应用程序中进行自动化操作。
在Excel、Word等Office应用程序中,都可以使用VBA来编写宏。
下面我们将重点讨论如何使用VBA自动发送电子邮件。
第一步,打开VBA编辑器。
在Excel中,您可以按下`Alt +F11`快捷键来打开VBA编辑器。
在VBA编辑器中,您可以看到“项目资源管理器”、“属性窗口”和“代码窗口”。
点击“插入”菜单,选择“模块”,这样您就可以在代码窗口中编写VBA代码了。
第二步,设置引用。
在VBA中发送电子邮件,需要使用Outlook应用程序的功能。
要在VBA中使用Outlook应用程序,需要先设置引用。
在VBA编辑器中,点击“工具”菜单,选择“引用”。
在弹出的对话框中,找到并勾选“Microsoft Outlook XX.X Object Library”,其中“XX.X”代表您安装的Outlook版本号。
点击确定按钮,即可设置成功。
第三步,编写VBA代码。
在代码窗口中,您可以根据自己的需求编写VBA代码。
以下是一个简单的例子:```Sub SendEmail()Dim OutlookApp As ObjectDim OutlookMail As Object' 创建一个Outlook应用程序对象Set OutlookApp = CreateObject("Outlook.Application")' 创建一个新的邮件对象Set OutlookMail = OutlookApp.CreateItem(0)' 设置邮件的收件人、主题和内容With OutlookMail.To="*********************".Subject = "自动发送的邮件".Body = "这是通过VBA自动发送的邮件。
NET环境下五种邮件发送解决方案

.NET环境下五种邮件发送解决方案1、使用outLook提供的发送如:我见过的用友软件U8生产制造(演示版),其中的邮件功能就是通过调用outLook 的ActiveX 组件优点:开发简单缺点:依赖outlook组件,SMTP 邮件服务邮件发送的代码如下:以下是引用片段:Private Sub Send()Dim outObj As New Outlook.Application()Dim Item As Outlook.MailItemClassItem = outObj.CreateItem(0)Item.To = "lihonggen0@ "Item.Subject = "hello"Item.Body = "hell"Item.Attachments.Add("C:\abc.txt")Item.Send()End Sub2、WEB开发,在中引用System.Web.Mail类System.Web.Mail 命名空间包含使您可以使用CDOSYS(Windows 2000 的协作数据对象)消息组件来构造和发送消息的类。
邮件消息是通过内置在Microsoft Windows 2000 中的SMTP 邮件服务或任意的SMTP 服务器来传送的。
此命名空间中的类可以在 或任何托管应用程序MailAttachment提供用于构造电子邮件附件的属性和方法。
MailMessage提供用于构造电子邮件的属性和方法。
SmtpMail提供用于使用Windows 2000 的协作数据对象(CDOSYS)消息组件来发送消息的属性和方法。
邮件可以通过Microsoft Windows 2000 中内置的SMTP 邮件服务或任意SMTP 服务器来传送。
System.Web.Mail 命名空间中的类型可以在 或任何托管应用程序使用。
Smtp服务器的设置,现在一些免费邮件提供商是不再提供针对所有邮件提供Smtp服务,在发送邮件的时候,需要验证用户信息,考虑Smtp用户验证问题如果Smtp服务器在本地计算机,发送速度很快的,基本上不用担心,如果不是本地服务器,那么发送的时候最好不要以此太多,一是速度问题,二是以此发送太多邮件,Smtp 服务器可能认为是垃圾邮件而拒绝服务代码如下:以下是引用片段:Private Sub Button1_Click(ByVal sender As System.Object,ByVal e AsSystem.EventArgs) Handles Button1.Click Dim mailObj As New MailMessage()Dim smtp As SmtpMail'定义SMTP服务器的名称smtp.SmtpServer = ""'定义邮件的发送地址mailObj.From = "lihonggen@"'定义邮件的接收地址mailObj.To = " AAA@"'定义邮件的暗送地址mailObj.Bcc= "aa@"'定义邮件的抄送地址 = "aaa@"'定义邮件的主题mailObj.Subject = "主题"'定义邮件的主体mailObj.Body = "邮件主体!"'邮件以 HTML的格式发送mailObj.BodyFormat = MailFormat.Html'定义邮件的有限级,在此设定为高mailObj.Priority = MailPriority.High'给发送的邮件附加上一个附件mailObj.Attachments.Add(NewMailAttachment("c:\aa.doc"))smTp.Send(mailObj)End Sub3、在或C#开发Windows 应用程序中使用.Sockets也是基于SMTP协议一、SMTP协议简介1、客户端通过服务器的25端口建立TCP/IP连接服务器端:220 Simple Mail Transfer Service Ready2、客户端使用“HELO”命令标识发件人客户端:HELO 服务器端:250 3、客户端发送MAIL命令,服务器端以OK作为响应表明准备接收客户端:MAIL FROM:〈A@〉服务器端:250 OK4、客户端发送RCPT命令标识收件人,服务器端回应是否愿意为收件人接受邮件客户端:RCPT TO:〈c@〉服务器端:250 OK5、协商结束后用命令DATA发送发送邮件客户端:DATA服务器端:354 Start mail input:end with 〈CRLF〉。
发送电子邮件

给邮件添加一个自定义类型的附件
AddHeader(Xheader,Value)
AddNativeHeader(Header,Value)
AddRecipient(emailAddress, recipientName,PGPKey)
给邮件添加一个自定义邮件头X-Header
给邮件添加一个邮件头
给邮件添加一个收件人。RecipientName 和PGPKey是可选项,RecioientName 为收件人姓名,PGPKey 给邮件加密
第七章 发送电子邮件
• 学习目标: • 掌握JMail组件的安装和注册的方法。 • 掌握利用JMail组件发送普通电子邮件
的方法。 • 掌握利用“无惧上传”上传文件的方
法 • 能利用JMail组件和“无惧上传”发送
带附件的邮件。
7.1 需求分析
大部分网站都具有将用户的注册信息、用户的留 言或用户找回的密码发送到指定的邮箱的功能。 Asp本身并不提供发送电子邮件的功能,但是可 以利用第三方组件来实现发送电子邮件。目前因 为大多数的虚拟主机都支持Jmail组件,本章将介 绍asp如何调用Jmail4.5组件发送电子邮件。在发 送电子邮件的时候有时需要发送带附件的电子邮 件,Asp本身也不提供上传附件的功能,利用无 惧上传类可以实现将邮件的附件上传到服务器中 ,然后在利用Jmail4.5组件中的相关方法发送带 附件的电子邮件。
7.2 任务分解
• 7.2.1 任务一:JMail组件安装、注册与卸载
1. JMail 的特点 W3 JMail组件是当前国际上最为流行的邮 件组件之一,当今世界上绝大部分ASP程序 开发人员都在使用JMail组件来构建邮件发 送系统。因为组件使用了最新的内核技术, 使用它更加可靠和稳定。
CASP系统使用手册

CASP系统使用手册1. 系统概述1.1 功能介绍- 登录与注销功能:用户可以通过输入用户名和密码登录到系统,并在不需要时进行注销。
- 用户管理功能:管理员可以添加、编辑和删除用户,以及分配相应的权限。
- 数据管理功能:支持对数据进行增删改查操作,并提供导入导出数据的选项。
1.2 技术要求- 操作系统要求: Windows XP或更高版本;Mac OS X10.x 或更高版本;Linux(Ubuntu, Fedora等)最新版;- 浏览器要求: Google Chrome 最新版;Mozilla Firefox 最新版。
2. 安装与配置指南2.1 安装包并解压缩文件夹至本地目录中。
2.2 打开浏览器,在地址栏中输入“localhost”访问CASPSystem首页。
按照页面提示完成基础设置。
3.用户账号注册流程说明注册步骤:- 进入CASPSystem首页“注册”按钮进入注册界面;- 输入个人信息(姓名、邮箱) 和设置密码;- 阅读并同意相关条款后提交表单.4.主页布局详解主页由以下几部分组成:4 .l 头部菜单栏 : 包含各种快捷.5.常见问题解答5.1 如何找回密码?- 在登录页面“忘记密码”,根据提示输入注册时使用的邮箱地址。
系统将发送一封包含重置密码的邮件到您的邮箱中。
按照邮件指引进行操作即可。
6.附件:CASPSystem用户手册.pdf法律名词及注释:- 登录与注销功能: 用户通过提供用户名和密码来访问系统,并在不需要时退出系统。
- 用户管理功能: 具有管理员权限可以添加、编辑和删除用户账号,并分配相应权限给他们。
- 数据管理功能: 提供对数据进行增删改查等操作并支持导入导出数据选项。
表单的提交方法

表单的提交方法表单的提交什么是表单的提交表单的提交是指通过填写表单中的字段数据,将数据发送到服务器进行处理的过程。
在网页中,表单的提交是实现用户与服务器之间交互的重要方法之一。
表单提交的方法1.GET方法GET方法是最常见的表单提交方法之一。
通过GET方法提交的表单数据会附加在URL的后面,以键值对的形式呈现。
例如:GET方法的特点是简单、直观,适用于在URL中传递少量数据。
但是,由于数据会出现在URL中,存在安全风险,且URL长度有限制。
2.POST方法POST方法是另一种常见的表单提交方法。
通过POST方法提交的表单数据不会附加在URL中,而是作为请求的一部分发送到服务器。
例如:POST /submit-form HTTP/Host:Content-Type: application/x-username=John&password=123456POST方法适合提交大量数据,且相对较安全,但相比GET方法稍显复杂。
3.AJAX方法AJAX是一种使用JavaScript和XMLHttpRequest对象实现的表单提交方法。
通过AJAX方法,表单数据可以异步地提交到服务器,页面不需要刷新。
这种方法可以提升用户体验,但对开发者要求较高。
var xhr = new XMLHttpRequest();("POST", "submit-form", true);("Content-Type", "application/json");= function() {if ( === 4 && === 200) {var response = ();// 处理服务器返回的数据}};var formData = {username: "John",password: "123456"};((formData));表单提交的注意事项•分析需求:在进行表单提交前,需要充分了解业务需求,确定需要提交的字段和数据类型。
SAP 将EXCEL作为附件发送Email

types: begin of xml_line,data(255) type x,end of xml_line.data:l_xml_table type table of xml_line.data:ls_itab type typ_itab.types: begin of xml_line,data(256) type x,end of xml_line.data: l_ixml type ref to if_ixml,l_streamfactory type ref to if_ixml_stream_factory, l_ostream type ref to if_ixml_ostream,l_renderer type ref to if_ixml_renderer,l_document type ref to if_ixml_document.data:l_element_root type ref to if_ixml_element,ns_attribute type ref to if_ixml_attribute,r_element_properties type ref to if_ixml_element,r_element type ref to if_ixml_element,r_worksheet type ref to if_ixml_element,r_table type ref to if_ixml_element,r_column type ref to if_ixml_element,r_row type ref to if_ixml_element,r_styles type ref to if_ixml_element,r_style type ref to if_ixml_element,r_borders type ref to if_ixml_element,r_border type ref to if_ixml_element,r_format type ref to if_ixml_element,r_cell type ref to if_ixml_element,r_data type ref to if_ixml_element,* l_xml_table TYPE TABLE OF xml_line,l_xml_size type i,l_rc type i,l_text(255) type c,l_value type string,l_type type string,p_type .field-symbols:<data_line> type any,<field> type any,<fwa> type any,<fs_flag> type any .data:p_tab like dd02l-tabname .data:data_tab type ref to data,gotstate type ddgotstate,dd03p_tab type table of dd03p,dd03p type dd03p.field-symbols:<data_tab> type standard table.field-symbols:<fs_field> like line of dd03p_tab.clear l_xml_table.define add_fieldcol.unassign: <fs_field>.clear dd03p.dd03p-fieldname = &1.dd03p-ddtext = &2.dd03p-outputlen = &3.dd03p-inttype = &4.dd03p-decimals = &5.dd03p-reptext = &6.dd03p-position = &7.append dd03p to dd03p_tab assigning <fs_field>.end-of-definition.add_fieldcol 'PRUEFLOS' '检验批' '8' 'C' '0' '' ''.add_fieldcol 'WERK' '工厂' '4' 'C' '0' '' ''.add_fieldcol 'CHARG' '批次' '6' 'C' '0' '' ''.add_fieldcol 'MATNR' '物料编码' '10' 'C' '0' '' ''.add_fieldcol 'MAKTX' '物料描述' '35' 'C' '0' '' ''.add_fieldcol 'LOSMENGE' '交检数量' '8' 'P' '3' '' ''.add_fieldcol 'GESSTICHPR' '抽检数量' '8' 'P' '3' '' ''.add_fieldcol 'ERSTELDAT' '收货日期' '8' 'C' '0' '' ''.add_fieldcol 'BUDAT' '过账日期' '8' 'C' '0' '' ''.add_fieldcol 'LAGORTCHRG' '库位' '4' 'C' '0' '' ''.add_fieldcol 'OBJNR' '工作指示编号' '8' 'C' '0' '' ''.add_fieldcol 'ERSTELLER' '创建者' '8' 'C' '0' '' ''.add_fieldcol 'TXT04' '系统状态' '35' 'C' '0' '' ''.* SORT dd03p_tab BY position .create data data_tab type standard table of typ_itab."STANDARD TABLE OF (P_TAB).* CREATE DATA DATA_TAB TYPE STANDARD TABLE OF (P_TAB).assign data_tab->* to <data_tab>.loop at gt_itab into ls_itab .append ls_itab to <data_tab>.endloop.* Creating a ixml factoryl_ixml = cl_ixml=>create( ).* Creating the dom object modell_document = l_ixml->create_document( ).* Create root node 'Workbook'l_element_root = l_document->create_simple_element(name = 'Workbook'* uri = 'urn:schemas-microsoft-com:office:spreadsheet' parent = l_document ).l_element_root->set_attribute(name = 'xmlns'value = 'urn:schemas-microsoft-com:office:spreadsheet' ).ns_attribute = l_document->create_namespace_decl(name = 'ss'prefix = 'xmlns'uri = 'urn:schemas-microsoft-com:office:spreadsheet' ). l_element_root->set_attribute_node( ns_attribute ). ns_attribute = l_document->create_namespace_decl(name = 'x'prefix = 'xmlns'uri = 'urn:schemas-microsoft-com:office:excel' ).l_element_root->set_attribute_node( ns_attribute ).* Create node for document properties.r_element_properties = l_document->create_simple_element(name = 'DocumentProperties'parent = l_element_root ).l_value = sy-uname.l_document->create_simple_element(name = 'Author'value = l_valueparent = r_element_properties ).* Stylesr_styles = l_document->create_simple_element(name = 'Styles'parent = l_element_root ).***** 抬头* Style for Header - Ice Blue, BOLDr_style = l_document->create_simple_element(name = 'Style'parent = r_styles ).r_style->set_attribute_ns(name = 'ID'prefix = 'ss'value = 'Header' ).r_format = l_document->create_simple_element(name = 'Font'parent = r_style ).r_format->set_attribute_ns(name = 'Bold'prefix = 'ss'value = '1' ).r_format = l_document->create_simple_element(name = 'Interior'parent = r_style ).r_format->set_attribute_ns(name = 'Color'prefix = 'ss'value = '#F2F2F2' ).r_format->set_attribute_ns(name = 'Pattern'prefix = 'ss'value = 'Solid' ).r_format = l_document->create_simple_element(name = 'Alignment'parent = r_style ).r_format->set_attribute_ns(name = 'Horizontal'prefix = 'ss'value = 'Center' ).r_format->set_attribute_ns(name = 'Vertical'prefix = 'ss'value = 'Center' ).r_format->set_attribute_ns(name = 'WrapText'prefix = 'ss'value = '1' ).**** 设置颜色格式***** 设置合计行格式r_style = l_document->create_simple_element(name = 'Style'parent = r_styles ).r_style->set_attribute_ns(name = 'ID'prefix = 'ss'value = 'RLine' ).r_format = l_document->create_simple_element( name = 'Interior'parent = r_style ).r_format->set_attribute_ns(name = 'Color'prefix = 'ss'value = '#FF0000' ).r_format->set_attribute_ns(name = 'Pattern'prefix = 'ss'value = 'Solid' ).* r_borders = l_document->create_simple_element( * name = 'Borders'* parent = r_style ).* r_format = l_document->create_simple_element( * name = 'Border'* parent = r_borders ).* r_format->set_attribute_ns(* name = 'Position'* prefix = 'ss'* value = 'Bottom' ).* r_format->set_attribute_ns(* name = 'LineStyle'* prefix = 'ss'* value = 'Dash' ).** r_format = l_document->create_simple_element( * name = 'Border'* parent = r_borders ).* r_format->set_attribute_ns(* name = 'Position'* prefix = 'ss'* value = 'Right' ).* r_format->set_attribute_ns(* name = 'LineStyle'* prefix = 'ss'* value = 'Dash' ).** r_format = l_document->create_simple_element( * name = 'Border'* parent = r_borders ).* r_format->set_attribute_ns(* name = 'Position'* prefix = 'ss'* value = 'Top' ).* r_format->set_attribute_ns(* name = 'LineStyle'* prefix = 'ss'* value = 'Dash' ).* r_format = l_document->create_simple_element( * name = 'Font'* parent = r_style ).* r_format->set_attribute_ns(* name = 'Bold'* prefix = 'ss'* value = '1' ).****** 设置颜色行是黄色r_style = l_document->create_simple_element(name = 'Style'parent = r_styles ).r_style->set_attribute_ns(name = 'ID'prefix = 'ss'value = 'YLine' ).r_format = l_document->create_simple_element( name = 'Interior'parent = r_style ).r_format->set_attribute_ns(name = 'Color'prefix = 'ss'value = '#FFFF00' ).r_format->set_attribute_ns(name = 'Pattern'prefix = 'ss'value = 'Solid' ).* Style for Dataloop at dd03p_tab into dd03p where fieldname <> 'MANDT'.case dd03p-inttype.when 'I' or 'N'.* General formatwhen 'P' or 'F'.* Numeric with specific number of decimalsr_style = l_document->create_simple_element(name = 'Style'parent = r_styles ).l_value = dd03p-fieldname.r_style->set_attribute_ns(name = 'ID'prefix = 'ss'value = l_value ).r_format = l_document->create_simple_element(name = 'NumberFormat'parent = r_style ).if dd03p-decimals > 0.l_value = '0.'.do dd03p-decimals times.concatenate l_value '0' into l_value.enddo.else.l_value = ''.endif.* l_value = '#,##0' .r_format->set_attribute_ns(name = 'Format'prefix = 'ss'value = l_value ).* WHEN 'D'.** General formatwhen others.* Fixed textr_style = l_document->create_simple_element(name = 'Style'parent = r_styles ).l_value = dd03p-fieldname.r_style->set_attribute_ns(name = 'ID'prefix = 'ss'value = l_value ).r_format = l_document->create_simple_element(name = 'NumberFormat'parent = r_style ).l_value = '@'.r_format->set_attribute_ns(name = 'Format'prefix = 'ss'value = l_value ).endcase.endloop .* Worksheetr_worksheet = l_document->create_simple_element(name = 'Worksheet 'parent = l_element_root ). r_worksheet->set_attribute_ns(name = 'Name'prefix = 'ss'value = 'Sheet1' ).* TABLE* <Table ss:ExpandedColumnCount="3" ss:ExpandedRowCount="1" x:FullCol umns="1" x:FullRows="1">r_table = l_document->create_simple_element(name = 'Table'parent = r_worksheet ).r_table->set_attribute_ns(name = 'FullColumns'prefix = 'x'value = '1' ).r_table->set_attribute_ns(name = 'FullRows'prefix = 'x'value = '1' ).* Column formatting ==>给对应列赋STYLE和WIDEloop at dd03p_tab into dd03p where fieldname <> 'MANDT'.* COLUMNNr_column = l_document->create_simple_element(name = 'Column'parent = r_table ).case dd03p-inttype.when 'I' or 'N'.* General formatwhen 'P' or 'F'.l_value = dd03p-fieldname.r_column->set_attribute_ns(name = 'StyleID'prefix = 'ss'value = l_value ).* WHEN 'D'.** General formatwhen others.l_value = dd03p-fieldname.r_column->set_attribute_ns(name = 'StyleID'prefix = 'ss'value = l_value ).* ENDIF.endcase.l_value = ( dd03p-outputlen + 5 ) * 5.condense l_value no-gaps.r_column->set_attribute_ns(name = 'Width'prefix = 'ss'value = l_value ).endloop."抬头* Column Headers Rowr_row = l_document->create_simple_element(name = 'Row'parent = r_table ).r_row->set_attribute_ns(name = 'StyleID'prefix = 'ss'value = 'Header' ).r_row->set_attribute_ns(name = 'AutoFitHeight'prefix = 'ss'value = '1' ).** Column nameloop at dd03p_tab into dd03p where fieldname <> 'MANDT'. * <Data>r_cell = l_document->create_simple_element(name = 'Cell'parent = r_row ).* ENDIF.l_value = dd03p-ddtext. "fieldname, scrtext_m etc.r_data = l_document->create_simple_element(name = 'Data'value = l_valueparent = r_cell ).r_data->set_attribute_ns(name = 'Type'prefix = 'ss'value = 'String' ).endloop.loop at <data_tab> assigning <data_line> .assign component 'LIGHT' of structure <data_line> to <fs_flag>.* ROWr_row = l_document->create_simple_element(name = 'Row'parent = r_table ).loop at dd03p_tab into dd03p where fieldname <> 'MANDT'.assign component dd03p-fieldname of structure <data_line> to <f ield>.check sy-subrc is initial.* <Cell>r_cell = l_document->create_simple_element(name = 'Cell'parent = r_row ).case dd03p-inttype.when 'I' or 'P' or 'F' or 'N'.l_type = 'Number'.* L_VALUE = <FIELD>.* CONDENSE L_VALUE NO-GAPS."负数时,将负号提前if <field> < 0.l_text = abs( <field> ).condense l_text.concatenate '-' l_text into l_value.* L_VALUE = L_TEXT.condense l_value no-gaps.else.l_value = <field>.if l_value is initial or l_value = 0.l_value = '-' .endif.condense l_value no-gaps.endif.when 'D' or 'T'.l_type = 'String'.if <field> = '00000000'.l_value = ''.else.write <field> to l_text.l_value = l_text.endif.when others.write <field> to l_text.shift l_text left deleting leading space.l_value = l_text.l_type = 'String'.endcase.** <DATA>if <fs_flag> = icon_led_red. " 异常通知单红色显示r_cell->set_attribute_ns(name = 'StyleID'prefix = 'ss'value = 'RLine' ).else.r_cell->set_attribute_ns(name = 'StyleID'prefix = 'ss'value = 'YLine' ).endif.r_data = l_document->create_simple_element(name = 'Data'value = l_valueparent = r_cell ). * Cell formatr_data->set_attribute_ns(name = 'Type'prefix = 'ss'value = l_type ).endloop.endloop.* CREATING A STREAM FACTORYl_streamfactory = l_ixml->create_stream_factory( ).* Connect internal XML table to stream factoryl_ostream = l_streamfactory->create_ostream_itable( table = l_xml_t able ).* RENDERING THE DOCUMENTl_renderer = l_ixml->create_renderer( ostream = l_ostreamdocument = l_document ).l_rc = l_renderer->render( ).* SAVING THE XML DOCUMENTl_xml_size = l_ostream->get_num_written_raw( ).***下载本地文件call method cl_gui_frontend_services=>gui_downloadexportingbin_filesize = l_xml_sizefilename = 'D:\xml\ZQMR022.xls'filetype = 'BIN'changingdata_tab = l_xml_tableexceptionsothers = 24.if sy-subrc <> 0.message id sy-msgid type sy-msgty number sy-msgnowith sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.endif.*****发送邮件data: objpack like sopcklsti1 occurs 2 with header line.data: objhead like solisti1 occurs 1 with header line.* DATA: OBJBIN LIKE SOLIX OCCURS 10 WITH HEADER LINE.data: objtxt like solisti1 occurs 10 with header line.data: reclist like somlreci1 occurs 5 with header line.data: objhex like solix occurs 10 with header line.data: doc_chng like sodocchgi1.data: tab_lines like sy-tabix.data: l_num(3).data: subj_date(10) type c.data:lv_char type string .data:mailtitle(100) type c.data:g_vendername like lfa1-name1.data g_lifnr like ekko-lifnr.data: g_adrnr like lfa1-adrnr.data:sender_address like soextreci1-receiver.data:wa_xml type xml_line.data:lt_mail like standard table of zcfg_mail with header line .data :begin of lt_address occurs 0 ,smtp_addr type ad_smtpadr ,end of lt_address .data :begin of lt_ccaddress occurs 0 ,smtp_addr type ad_smtpadr ,end of lt_ccaddress .*** Mail Object* CONCATENATE lv_str 'Weekly Sales Report' INTO doc_chng-obj_descr SEPARATED BY space.doc_chng-obj_descr = '检验批监控' .*** 邮件正文clear objtxt.objtxt = '你好:'.append objtxt.clear objtxt.append objtxt.clear objtxt.objtxt = '附件是存在异常检验批监控数据,请查收并及时处理,谢谢 '.append objtxt.clear objtxt.lv_char = '其中异常总数量: ' && gv_line && ';' && '未检验数量:' && gv_wj&& ';' && '异常数量:' && gv_yc .objtxt = lv_char .append objtxt.describe table objtxt lines tab_lines.read table objtxt index tab_lines.doc_chng-doc_size = ( tab_lines - 1 ) * 255 + strlen( objtxt ).* Packing List For the E-mail Bodyobjpack-head_start = 1.objpack-head_num = 0.objpack-body_start = 1.objpack-body_num = tab_lines.objpack-doc_type = 'RAW'.append objpack.**内表作为邮件附件** Creation of the Document Attachmentloop at l_xml_table into wa_xml.clear objhex.objhex-line = wa_xml-data.append objhex.endloop.describe table objhex lines tab_lines."objbinobjhead = '检验批监控'.append objhead.* Packing List For the E-mail Attachmentobjpack-transf_bin = 'X'.objpack-head_start = 1.objpack-head_num = 0.objpack-body_start = 1.objpack-body_num = tab_lines.objpack-obj_descr = '检验批监控异常数据'.objpack-obj_name = '检验批监控.xls' .objpack-doc_type = 'XLS'.objpack-doc_size = tab_lines * 255.append objpack.**** 取发件人和收件人以及抄送人,sender_address = '*************************.cn'.select *into corresponding fields of table lt_mailfrom zcfg_mailwhere progname = 'ZQMR022'.if sy-subrc = 0 .read table lt_mail index 1 .split lt_mail-recname at '/' into table lt_address .split lt_mail-ccname at '/' into table lt_ccaddress .endif.loop at lt_address.clear reclist .reclist-receiver = lt_address-smtp_addr.* RECLIST-EXPRESS = 'X'. "发送快件reclist-rec_type = 'U'.translate reclist-receiver to upper case.append reclist.endloop.loop at lt_ccaddress.clear reclist .reclist-receiver = lt_ccaddress-smtp_addr.reclist-copy = 'X'. "抄送reclist-rec_type = 'U'.translate reclist-receiver to upper case.append reclist.endloop.call function 'SO_DOCUMENT_SEND_API1'exportingdocument_data = doc_chngput_in_outbox = 'X'sender_address = sender_address "'qyyu@teamwisep 'sender_address_type = 'SMTP'"Bcommit_work = 'X'tablespacking_list = objpackobject_header = objhead* contents_bin = objbincontents_txt = objtxtcontents_hex = objhex* OBJECT_PARA =* OBJECT_PARB =receivers = reclistexceptionstoo_many_receivers = 1document_not_sent = 2document_type_not_exist = 3operation_no_authorization = 4parameter_error = 5x_error = 6enqueue_error = 7others = 8.if sy-subrc <> 0.message id sy-msgid type sy-msgty number sy-msgnowith sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. else.wait up to 2 seconds.submit rsconn01 with mode = 'INT' and return.message '发送成功' type 'S'.endif.。
表单提交的多种方法

表单提交的多种⽅法表单提交共有四个⽅法表单提交⽅式⼀:直接利⽤form表单提交html页⾯代码:<!DOCTYPE html><html><head><meta charset="UTF-8" /><title>Insert title here</title></head><body><form action="http://localhost:8080/user" method="post">username:<input type="text" name="username" /><br>password:<input type="password" name="password" /> <br><input type="submit" value="登录"></form></body></html>controller页⾯代码:package com.help.demo.controller;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.PostMapping;import org.springframework.web.bind.annotation.ResponseBody;@Controllerpublic class UserController {@PostMapping("/user")@ResponseBodypublic String add(String username,String password){System.out.println("返回值是》》"+username+"---->"+password);String str = "返回值是"+username+password;return str;}}》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》表单提交⽅式⼆:使⽤ajax提交html页⾯代码:<!DOCTYPE html><html><head><meta charset="UTF-8" /><title>Insert title here</title></head><body><!-- --><form method="post" onsubmit="return false" action="##" id="formtest">username:<input type="text" name="username" /><br>password:<input type="password" name="password" /> <br><input type="button" value="登录" onclick="login()"></form><script type="text/javascript" src="/js/jquery.min.js"></script><script type="text/javascript" src="/js/jquery.easyui.min.js"></script><script type="text/javascript" src="/js/extJquery.js"></script><script type="text/javascript" src="/js/extEasyUI.js"></script><script type="text/javascript">function login() {$.ajax({//⼏个参数需要注意⼀下type: "POST",//⽅法类型dataType: "text",//预期服务器返回的数据类型如果是对象返回的是json 如果是字符串这⾥⼀定要定义text 之前我就是定义json 结果字符串的返回⼀直到额error中去/*dataType:要求为String类型的参数,预期服务器返回的数据类型。
asp发邮件代码

objMail.To="recipient@"
objMail.Subject="subject"
objMail.TextBody="body"
objMail.Send
%>
emailbady="<font size=3>资料:</font><br>"
Const cdoSMTPServerPort="/cdo/configuration/smtpserverport"
Const cdoSMTPC
Const cdoSMTPAuthenticate="/cdo/configuration/smtpauthenticate"
rs("regtime")=DateAdd("h", 15, now())----
2.使用CDO发送邮件
注:CDO和CDOSYS在iis6和IIS7环境下均可使用引用:
<%
sendUrl="/cdo/configuration/sendusing"
Set objMail=CreateObject("CDO.Message")
' Use the config object created above
Set objMail.Configuration=objConfig
objMail.From="sender@"
SendEmailState = 2 'Failure
使用VBA进行邮件发送

使用VBA进行邮件发送在现代社会中,邮件已成为人们日常通信的重要方式之一。
无论是工作上还是个人生活中,邮件的使用频率都非常高。
在许多商业场景中,我们需要根据特定的条件自动发送邮件,这就需要使用VBA来编写邮件发送的代码。
VBA(Visual Basic for Applications)是一种可以用于Microsoft Office套件中各个应用程序的宏编程语言。
通过使用VBA,我们可以自动执行许多重复的任务,节省时间和劳动力。
下面我们将探讨如何使用VBA进行邮件发送。
首先,我们需要打开要发送邮件的应用程序,比如Microsoft Outlook。
在VBA中,可以使用`CreateObject`函数来创建一个Outlook应用程序对象。
以下是一个简单的代码示例:```vbaDim objOutlook As ObjectSet objOutlook = CreateObject("Outlook.Application")```接下来,我们需要创建一个邮件项,并设置相关的属性,比如发件人、收件人、主题和正文等。
以下是一个示例代码:```vbaDim objMail As ObjectSet objMail = objOutlook.CreateItem(0) ' 创建新邮件With objMail.Subject = "这是一封测试邮件" ' 设置主题.Body = "这是一封测试邮件的内容" ' 设置正文.To="*********************"'设置收件人邮箱地址.Send ' 发送邮件End With```上述代码中,我们使用了`.Subject`来设置邮件的主题,使用`.Body`来设置邮件的正文,使用`.To`来设置邮件的收件人。
最后,我们使用`.Send`方法来发送邮件。
post请求上传文件的方法

post请求上传文件的方法在开发Web应用程序时,经常需要实现上传文件的功能,而POST请求是实现文件上传的常用方法之一。
下面将介绍一种常见的POST请求上传文件的方法。
要实现POST请求上传文件,我们首先需要一个带有文件上传表单的HTML页面。
在表单中使用<input type="file">标签来创建一个文件选择框,用户可以通过该选择框选择要上传的文件。
接下来,我们需要在表单中添加一个submit按钮,用于提交表单。
当用户选择了要上传的文件并点击了提交按钮后,浏览器会将文件打包成multipart/form-data格式的请求,然后将其发送到服务器端。
在服务器端,我们需要通过相应的程序来接收和处理这个上传的文件。
对于服务器端的处理,可以使用各种编程语言和框架来实现。
以Python语言为例,可以使用Flask框架来处理文件上传。
在Flask框架中,我们可以使用request对象的files属性来访问上传的文件。
下面是一个使用Flask框架处理POST请求上传文件的简单示例代码:```pythonfrom flask import Flask, requestapp = Flask(__name__)@app.route('/upload', methods=['POST'])def upload():file = request.files['file'] # 获取上传的文件对象file.save('uploaded_file.txt') # 保存上传的文件# 进行其他的业务处理return '文件上传成功'if __name__ == '__main__':app.run()```上述代码中,我们通过调用request对象的files属性来获取上传的文件对象。
在本例中,我们假设文件选择框的name属性为'file'。
如何在ASP.NET中发送电子邮件?

如何在中发送电子邮件?例一:input.htm<html><head><title>精彩春风之发送HTML格式邮件</title></head><body><form method="post" name="form1" action="emailhtml2.aspx">邮件地址:<input type="text" name="EmailAddress" size="30"value="song@"><br><br><input type="submit" value="发送" name="b1"></form></body></html>sendemail.asp<%@ Import Namespace="System.Web.Util" %><script language="VB" runat=server>Sub Page_load(Sender as Object, E as EventArgs)Dim MyMessage as New MailMessageMyMessage.To = request.form("EmailAddress")MyMessage.From = "随风起舞"MyMessage.Subject = "精彩春风之芊芊祝福!"MyMessage.BodyFormat = MailFormat.Html` 增加BodyFormat, 发送格式化的HTML,并删除这行和在message.的HTML代码,作为常规文本发送MyMessage.Body = "<html><body><h1>您收到的邮件来自随风起舞!<ahref=''></h1></body></html>"SmtpMail.Send(MyMessage)End Sub</script><html><head><title>精彩春风之发送HTML格式邮件</title></head><body>恭喜,你已发送了HTML 格式的邮件到:<br><h1><% response.write(request.form("EmailAddress")) %></h1></body></html>例二:<% @Page Language="C#" %><% @Import Namespace="System.Web.Util" %><%MailMessage msgMail = new MailMessage();msgMail.To = "liyanbing@ "; = "songyanhao@";msgMail.From = "feiwenhua@ ";msgMail.Subject = "闪亮日子之发送HTML格式的邮件"; msgMail.BodyFormat = MailFormat.Html;string strBody = "<html><body><b>闪亮日子</b>" +" <font color=\"red\">春风精彩</font></body></html>"; msgMail.Body = strBody;SmtpMail.Send(msgMail);Response.Write("恭喜,发送成功!");%>例三:<% @Page Language="C#" %><% @Import Namespace="System.Web.Util" %><%string strTo = "songyanhao@";string strFrom = "feiwenhua@";string strSubject = "闪亮日子之发送简单的邮件"; SmtpMail.Send(strFrom, strTo, strSubject,"春风精彩之文本文件"); Response.Write("恭喜,发送成功!");%>例四:<% @Page Language="C#" %><% @Import Namespace="System.Web.Util" %><%MailMessage msgMail = new MailMessage();msgMail.To = "sunchunliang@ ";msgMail.From = "wuxiaotao@ ";msgMail.Subject = "闪亮日子之发送带附件的邮件";msgMail.BodyFormat = MailFormat.Text;msgMail.Body = "闪亮日子之春风精彩!";msgMail.Attachments.Add(new MailAttachment("c:\\shanliangrizi\\jingcaitxt")); SmtpMail.Send(msgMail);Response.Write("恭喜,发送成功!");%>例五:我们来使用.Net FrameWork SDK中的一个关于电子邮件发送的Class Library(类库)System.Web.Mail完成邮件发送。
form表单上传原理

form表单上传原理
表单上传是一种常见的文件上传方式,其原理如下:
1. 用户在浏览器中选择要上传的文件,然后点击“提交”按钮。
2. 浏览器将用户选择的文件通过表单的“enctype”属性编码,通常使用“multipart/form-data”表示。
这表示在提交表单时,会以多条消息的形式将表单数据和文件一起发送到服务器。
3. 浏览器将表单数据和文件一起封装为HTTP请求,使用POST方法发送给服务器。
请求头中会包含一些相关信息,如Content-Type表示请求的数据类型。
4. 服务器接收到请求后,解析表单数据和文件。
服务器可以通过解析请求头和请求体来获取相关信息和文件内容。
5. 服务器对于文件的处理方式有几种可能,比如保存文件到本地磁盘或者将其存储到数据库中。
6. 服务器最终返回一个响应给浏览器,如一个HTML页面或一个JSON数据。
需要注意的是,由于文件上传可能涉及到大文件和网络不稳定等因素,所以在实际应用中需要进行一些处理,如限制文件大小、上传进度显示、断点续传等。
ASP.NET最全的POST提交数据和接收数据——(1)用url传参方式

最全的POST提交数据和接收数据——(1)⽤url传参⽅式//1、对象提交,字典⽅式//接⼝⽅:public ActionResult GetArry(Car model)public void PostResponse(){HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create("/appapi/apiaccount/aa");Encoding encoding = Encoding.UTF8;//string param = "UserName=123&UserPwd=123";//post 参数Car c = new Car();c.Passed = 1;//truec.LinkTel = "⼩测试";c.CarBrand = "11111111";c.Loads = 101;erId = 50;c.SortId = 1;c.CarArea = "11111111";c.CarStateId = 1;c.LinkMan = "1111111111";c.Sfzh = "141124188789786031";c.CarNum = "ABCDE1";c.CarLength = 100;c.DrivingNum = "11111111";c.State = 1;c.CarId = 0;c.CarOwner = "111111";c.CarAreaId = 1;c.CarTypeId = 1;c.AddTime = DateTime.Now;IDictionary<string, string> para = new Dictionary<string, string>();para.Add("LinkTel", "第⼆次测试");para.Add("CarBrand", "1111");para.Add("Loads", "101");para.Add("UserId", "50");para.Add("SortId", "1");StringBuilder buffer = new StringBuilder();int i = 0;foreach (string key in para.Keys){if (i > 0){buffer.AppendFormat("&{0}={1}", key, para[key]);}else{buffer.AppendFormat("{0}={1}", key, para[key]);}i++;}//JavaScriptSerializer ser = new JavaScriptSerializer();//string param = ser.Serialize(c);byte[] bs = Encoding.UTF8.GetBytes(buffer.ToString());string responseData = String.Empty;req.Method = "POST";//req.ContentType = "application/x-www-form-urlencoded;charset=utf-8";req.ContentLength = bs.Length;using (Stream reqStream = req.GetRequestStream()){reqStream.Write(bs, 0, bs.Length);reqStream.Close();}using (HttpWebResponse response = (HttpWebResponse)req.GetResponse()){using (StreamReader reader = new StreamReader(response.GetResponseStream(), encoding)){responseData = reader.ReadToEnd().ToString();}Response.Write(responseData);}}//2、链接⽅式提交数据//接⼝⽅:public ActionResult GetArry(int UserId,string GroupName)//提交参数:string param = "UserId=737&GroupName=⼀杯美酒";//post 参数public void PostMethd(){HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create("/appapi/apiaccount/GetGroupsByUserId"); Encoding encoding = Encoding.UTF8;string param = "userid=735";//post 参数byte[] bs = Encoding.UTF8.GetBytes(param.ToString());//byte[] bs = new byte[]{};string responseData = String.Empty;req.Method = "POST";req.ContentType = "application/x-www-form-urlencoded;charset=utf-8";req.ContentLength = bs.Length;//return;using (Stream reqStream = req.GetRequestStream()){reqStream.Write(bs, 0, bs.Length);reqStream.Close();}using (HttpWebResponse response = (HttpWebResponse)req.GetResponse()){using (StreamReader reader = new StreamReader(response.GetResponseStream(), encoding)){responseData = reader.ReadToEnd().ToString();}Response.Write(responseData);}}//3、提交数组//接⼝⽅:public ActionResult GetArry(string[] arrpost)//提交参数:string param = "arrpost=737&arrpost=⼀杯美酒";//post 参数public void PostArrMethd(){HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create("http://localhost:7242/appapi/apiaccount/GetArry");Encoding encoding = Encoding.UTF8;string param = "arrpost=737&arrpost=⼀杯美酒";//post 参数byte[] bs = Encoding.UTF8.GetBytes(param.ToString());//byte[] bs = new byte[]{};string responseData = String.Empty;req.Method = "POST";req.ContentType = "application/x-www-form-urlencoded;charset=utf-8";req.ContentLength = bs.Length;//return;using (Stream reqStream = req.GetRequestStream()){reqStream.Write(bs, 0, bs.Length);reqStream.Close();}using (HttpWebResponse response = (HttpWebResponse)req.GetResponse()){using (StreamReader reader = new StreamReader(response.GetResponseStream(), encoding)){responseData = reader.ReadToEnd().ToString();}Response.Write(responseData);}}//4、提交数组对象//接⼝⽅:public ActionResult GetArry(List<Car> arrpost)/* 对象public class Dasa{public Dasa() { }private string name;public string Name{get { return name; }set { name = value; }}private int age;public int Age{get { return age; }set { age = value; }}}*///提交参数:string param = "arrpost[0].Name=737&arrpost[0].Age=23&arrpost[1].Name=⼀杯美酒&arrpost[1].Age=25";//post 参数public void PostArrObjMethd(){HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create("http://localhost:7242/appapi/apiaccount/GetArry");Encoding encoding = Encoding.UTF8;string param = "arrpost[0].Name=737&arrpost[0].Age=23&arrpost[1].Name=⼀杯美酒&arrpost[1].Age=25";//post 参数byte[] bs = Encoding.UTF8.GetBytes(param.ToString());//byte[] bs = new byte[]{};string responseData = String.Empty;req.Method = "POST";req.ContentType = "application/x-www-form-urlencoded;charset=utf-8";req.ContentLength = bs.Length;//return;using (Stream reqStream = req.GetRequestStream()){reqStream.Write(bs, 0, bs.Length);reqStream.Close();}using (HttpWebResponse response = (HttpWebResponse)req.GetResponse()){using (StreamReader reader = new StreamReader(response.GetResponseStream(), encoding)){responseData = reader.ReadToEnd().ToString();}Response.Write(responseData);}}#region⽂件提交//上传调⽤⽅法public void upImg(){NameValueCollection nvc = new NameValueCollection();nvc.Add("id", "TTR");nvc.Add("btn-submit-photo", "Upload");HttpUploadFile("/appapi/apiaccount/AddtUser", @"D:\1.jpg", "file", "image/jpeg", nvc);}//5、提交⽂件public string HttpUploadFile(string url, string file, string paramName, string contentType, NameValueCollection nvc){string result = string.Empty;string boundary = "---------------------------" + DateTime.Now.Ticks.ToString("x");byte[] boundarybytes = System.Text.Encoding.ASCII.GetBytes("\r\n--" + boundary + "\r\n");HttpWebRequest wr = (HttpWebRequest)WebRequest.Create(url);wr.ContentType = "multipart/form-data; boundary=" + boundary;wr.Method = "POST";wr.KeepAlive = true;wr.Timeout = 300000;wr.Credentials = .CredentialCache.DefaultCredentials;Stream rs = wr.GetRequestStream();string formdataTemplate = "Content-Disposition: form-data; name=\"{0}\"\r\n\r\n{1}";foreach (string key in nvc.Keys){rs.Write(boundarybytes, 0, boundarybytes.Length);string formitem = string.Format(formdataTemplate, key, nvc[key]);byte[] formitembytes = System.Text.Encoding.UTF8.GetBytes(formitem);rs.Write(formitembytes, 0, formitembytes.Length);}rs.Write(boundarybytes, 0, boundarybytes.Length);string headerTemplate = "Content-Disposition: form-data; name=\"{0}\"; filename=\"{1}\"\r\nContent-Type: {2}\r\n\r\n";string header = string.Format(headerTemplate, paramName, file, contentType);byte[] headerbytes = System.Text.Encoding.UTF8.GetBytes(header);rs.Write(headerbytes, 0, headerbytes.Length);FileStream fileStream = new FileStream(file, FileMode.Open, FileAccess.Read);byte[] buffer = new byte[4096];int bytesRead = 0;while ((bytesRead = fileStream.Read(buffer, 0, buffer.Length)) != 0){rs.Write(buffer, 0, bytesRead);}fileStream.Close();byte[] trailer = System.Text.Encoding.ASCII.GetBytes("\r\n--" + boundary + "--\r\n");。
ASP+Jmail提交表单到指定邮箱方法

下面以申请友情链接为例,介绍利用ASP+JMail的方法将表单数据发送到指定邮箱。
之所以选择JMail为例,是因为国内大部分主机都支持Jmail组件。
Html表单页面代码:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312" /><title>友情链接申请</title></head><body><form id="form" name="form" method="post" action="send.asp" ><ul><h1>web技术收藏夹友情链接申请</h1><li><input type="text" name="pname" />网站名称</li><li><input type="text" name="pname" />网址</li><li><input type="text" name="pname" />您的邮箱</li><li><input type="text" name="pname" />链接关键词</li><li><textarea name="msgg" cols="60" rows="5" >网站介绍</textarea></li><Li><input name="submit" type="submit" value="提交" /></Li></ul></form></body></html>send.asp页面代码:<html><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><meta http-equiv=refresh content=3;url=''/><title>友情链接提交成功</title></head><!--定义3秒钟自动跳转--><script language="JavaScript">functioncountDown(secs){jump.innerText=secs;if(--secs>0)setTimeout( "countDown(" +secs+ ")" ,1000);}countDown(3);</script><body><%'下面是定义一些变量,是这些变量从表单页面获取信息webname=Request.Form ("webname")website=Request.Form ("website")key=Request.Form ("key")email=Request.Form ("email")message=Request.Form ("message")' 下面就是调用从表单页获取的信息,赋值到mess,&是连接符,vbcrlf表示换行回车: mess = mess & "---------------Webmail表单开始-------------------" &vbcrlfmess = mess & "网站名称:" &webname&vbcrlfmess = mess & "网址:" & website &vbcrlfmess = mess & "关键词:" & key &vbcrlfmess = mess & "Email:" & email &vbcrlfmess = mess & "网站介绍:" & message &vbcrlfmess = mess & "---------------Webmail表单结束-------------------" &vbcrlf' 下面是调用Jmail组件的部分,其中邮箱,密码填写正确的,否则发送不成功Set JMail=Server.CreateObject("JMail.Message")JMail.silent = true '则errorcode包含的是错误代码JMail.Logging=True '是否使用日志JMail.Charset="gb2312"JMail.ContentType = "text/plain" 'text/html是超文本格式text/plain是文本格式JMail.MailServerUserName = "xxx123@" '您的邮件服务器登录名JMail.MailServerPassword = "xxxxxxx" '登录密码JMail.From = "xxx123@" '发件人(要填合法正确邮箱才能发出去信件)JMail.FromName = "阿泰ATai" '发件人姓名JMail.AddRecipient "360cold@" '收件人JMail.Subject = "友情链接申请" '主题,JMail.Body = mess '正文,JMail.Send "" 'smtp服务器地址JMail.Priority=3 '1: 最高优先级.2:高3:普通4:低5:最低Set JMail=nothing%><CENTER>提交成功,我们会尽快审核回复,谢谢!</CENTER><p align="center">--- < <font color=blue>3</font>秒钟后自动跳转至主页<a href="">(点击跳转) </a>> ---</p></body></html>。
在asp中发送邮件 表单提交到邮箱 表单发送到邮箱

在asp中发送邮件表单提交到邮箱表单发送到邮箱1.Jmail的用法Jmail的使用说明<%Dim SendStatSendStat = Jmail("wyongzhi@","Test Jmail","Just a test!","US-ASCII","text/plain") Response.Write SendStat%><%'--------------------------------------------------------------------Function Jmail(mailTo,mailTopic,mailBody,mailCharset,mailContentType)'--------------------------------------------------------------------'JMail'--------------------------------------------------------------------'入口参数:'mailTo 收件人email地址'mailTopic 邮件主题'mailBody 邮件正文(内容)'mailCharset 邮件字符集,例如GB2312或US-ASCII'mailContentType 邮件正文格式,例如text/plain或text/html'返回值:'字符串,发送成功后返回OK,不成功返回错误信息'使用方法:'1)设置好常量,即以Const开头的变量'2)使用类似如下代码发信'Dim SendStat'SendStat = Jmail("aa@","测试Jmail","这是一封<br/>测试信!","GB2312","text/html") 'Response.Write SendStat'--------------------------------------------------------------------'***************根据需要设置常量开始*****************DimConstFromNameCn,ConstFromNameEn,ConstFrom,ConstMailDomain,ConstMailServerUserName,ConstMailServerPasswordConstFromNameCn = ""'发信人中文姓名(发中文邮件的时候使用),例如'张三' ConstFromNameEn = ""'发信人英文姓名(发英文邮件的时候使用),例如'zhangsan' ConstFrom = ""'发信人邮件地址,例如'zhangsan@'ConstMailDomain = ""'smtp服务器地址,例如 ConstMailServerUserName = ""'smtp服务器的信箱登陆名,例如'zhangsan'。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
在asp中发送邮件表单提交到邮箱表单发送到邮箱1.Jmail的用法Jmail的使用说明<%Dim SendStatSendStat = Jmail("wyongzhi@","Test Jmail","Just a test!","US-ASCII","text/plain") Response.Write SendStat%><%'--------------------------------------------------------------------Function Jmail(mailTo,mailTopic,mailBody,mailCharset,mailContentType)'--------------------------------------------------------------------'JMail'--------------------------------------------------------------------'入口参数:'mailTo 收件人email地址'mailTopic 邮件主题'mailBody 邮件正文(内容)'mailCharset 邮件字符集,例如GB2312或US-ASCII'mailContentType 邮件正文格式,例如text/plain或text/html'返回值:'字符串,发送成功后返回OK,不成功返回错误信息'使用方法:'1)设置好常量,即以Const开头的变量'2)使用类似如下代码发信'Dim SendStat'SendStat = Jmail("aa@","测试Jmail","这是一封<br/>测试信!","GB2312","text/html") 'Response.Write SendStat'--------------------------------------------------------------------'***************根据需要设置常量开始*****************DimConstFromNameCn,ConstFromNameEn,ConstFrom,ConstMailDomain,ConstMailServerUserName,ConstMailServerPasswordConstFromNameCn = ""'发信人中文姓名(发中文邮件的时候使用),例如'张三' ConstFromNameEn = ""'发信人英文姓名(发英文邮件的时候使用),例如'zhangsan' ConstFrom = ""'发信人邮件地址,例如'zhangsan@'ConstMailDomain = ""'smtp服务器地址,例如 ConstMailServerUserName = ""'smtp服务器的信箱登陆名,例如'zhangsan'。
注意要与发信人邮件地址一致!ConstMailServerPassword = ""'smtp服务器的信箱登陆密码'***************根据需要设置常量结束*****************'-----------------------------以下内容无需改动------------------------------On Error Resume NextDim myJmailSet myJmail = Server.CreateObject("JMail.Message")myJmail.Logging = True'记录日志myJmail.ISOEncodeHeaders = False'邮件头不使用ISO-8859-1编码myJmail.ContentTransferEncoding = "base64"'邮件编码设为base64myJmail.AddHeader "Priority","3"'添加邮件头,不要改动!myJmail.AddHeader "MSMail-Priority","Normal"'添加邮件头,不要改动!myJmail.AddHeader "Mailer","Microsoft Outlook Express 6.00.2800.1437"'添加邮件头,不要改动!myJmail.AddHeader "MimeOLE","Produced By Microsoft MimeOLE V6.00.2800.1441"'添加邮件头,不要改动!myJmail.Charset = mailCharsetmyJmail.ContentType = mailContentTypeIf UCase(mailCharset) = "GB2312" ThenmyJmail.FromName = ConstFromNameCnElsemyJmail.FromName = ConstFromNameEnEnd IfmyJmail.From = ConstFrommyJmail.Subject = mailTopicmyJmail.Body = mailBodymyJmail.AddRecipient mailTomyJmail.MailDomain = ConstMailDomainmyJmail.MailServerUserName = ConstMailServerUserName myJmail.MailServerPassword = ConstMailServerPasswordmyJmail.Send ConstMailDomainmyJmail.CloseSet myJmail=nothingIf Err ThenJmail=Err.DescriptionErr.ClearElseJmail="OK"End IfOn Error Goto 0End Function'--------------------------------------------------------------------%>2.easyMail的用法easymail组件的用法easymail组件使用说明Function SendEasyMail(Email,Topic,MailBody,TextBody)'on error resume nextdim Mailsendset Mailsend = Server.CreateObject("easymail.Mailsend")Dim Tid,UnUn = "admin@system.mail" '您的邮件服务器登录名,不需要密码Dim EISet EI = server.CreateObject("ers")Tid = EI.Login(un)Set EI = NothingMailsend.createnew Un,Tid '邮箱账号,临时IDMailsend.CharSet = "gb2312" '编码Mailsend.MailName = "LeadBBS" '发件人名Mailsend.EM_BackAddress = "" '邮件回复地址Mailsend.EM_Bcc = "" '暗送地址Mailsend.EM_Cc = "" '抄送地址Mailsend.EM_OrMailName = "" '原邮件名Mailsend.EM_Priority = "Normal" '邮件重要度Mailsend.EM_ReadBack = false '是否读取确认,挂号信(限本系统内用户) Mailsend.EM_SignNo = -1 '使用签名的序号Mailsend.EM_Subject = Topic '主题Mailsend.EM_Text = TextBody '内容Mailsend.EM_HTML_Text = MailBody 'HTML邮件内容eRichEditer = true '发送的是否为HTML格式邮件Mailsend.EM_TimerSend = "" '定时发送的时间Mailsend.EM_To = Email '收件人地址Mailsend.ForwardAttString = "" '转发邮件时的原附件Mailsend.AddFromAttFileString = "" '添加自网络存储中的文件名Mailsend.SystemMessage = false '是否是系统邮件Mailsend.SendBackup = false '是否保存发送邮件If Mailsend.Send() = false ThenSendEasyMail = 0ElseSendEasyMail = 1End IfSet Mailsend = nothingEnd Function3.无组件的用法无组件用asp发送邮件提交表格到指定邮箱Function SendCDOMail(Email,Topic,TextBody)dim objCDOMailSet objCDOMail = Server.CreateObject("CDONTS.NewMail")objCDOMail.From ="mail377234@" '改为你的邮箱objCDOMail.To = EmailobjCDOMail.Subject = TopicobjCDOMail.Body = TextBodyobjCDOMail.SendSet objCDOMail = NothingSendCDOMail = 1End Function%>。