带EXCEL附件邮件发送相关代码

1.查看生成的邮件

2.1 非面向对象的方式(demo直接copy即可)

​
REPORT Z12.
DATA: IT_DOCUMENT_DATA TYPE SODOCCHGI1,
      IT_CONTENT_TEXT  TYPE STANDARD TABLE OF SOLISTI1 WITH HEADER LINE,
      IT_PACKING_LIST  TYPE TABLE OF SOPCKLSTI1 WITH HEADER LINE,
      IT_RECEIVERS     TYPE STANDARD TABLE OF SOMLRECI1 WITH HEADER LINE,
      LC_MAIL_ATTACH   TYPE STRING,
      LT_CONTENT_HEX   TYPE STANDARD TABLE OF SOLIX WITH HEADER LINE,
      LT_OBJECT_HEADER TYPE STANDARD TABLE OF SOLISTI1 WITH HEADER LINE,
      LC_MAIL_XATTACH  TYPE XSTRING,
      LV_SEND_ALL      TYPE C,
      IT_MAKT          LIKE TABLE OF MAKT WITH HEADER LINE,
      FIR_DATE         TYPE SY-DATUM,
      MIMETYPE         TYPE CHAR64.
DATA: IT_ITAB TYPE TABLE OF ITAB WITH HEADER LINE,
      WA_ITAB TYPE ITAB.

CONSTANTS:LC_TAB  TYPE C VALUE CL_BCS_CONVERT=>GC_TAB,       "excel换格符
          LC_CTRL TYPE C VALUE CL_BCS_CONVERT=>GC_CRLF.      "excel换行符

  PERFORM SEND_EMAIL.


*&---------------------------------------------------------------------*
*&      Form  SEND_EMAIL
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM SEND_EMAIL.
  DATA SY_VLINE TYPE I.
  DATA:MBLNR TYPE STRING,   "物料凭证
       MATNR TYPE STRING,   "物料
       MJAHR TYPE STRING,   "年度
       MAKTX TYPE STRING.   "物料描述

****邮件标题信息
  IT_DOCUMENT_DATA-OBJ_DESCR = '邮件主题1' .    "内容的简短描述
  IT_DOCUMENT_DATA-PRIORITY = '1'.             "优先次序  1~9  1:最高优先权
  IT_DOCUMENT_DATA-OBJ_NAME = 'OFFER'.
  IT_DOCUMENT_DATA-OBJ_LANGU = SY-LANGU.

*****邮件正文信息
  IT_CONTENT_TEXT = '各位好:'.
  APPEND IT_CONTENT_TEXT.
  IT_CONTENT_TEXT = '  此邮件为测试邮件!!!!!!!'.
  APPEND IT_CONTENT_TEXT.

  DESCRIBE TABLE IT_CONTENT_TEXT LINES SY_VLINE.
  IT_DOCUMENT_DATA-DOC_SIZE = 255 * ( SY_VLINE - 1 ) + STRLEN( IT_CONTENT_TEXT ).  "SAPoffice 文档的大小(用于 API1)

  IT_PACKING_LIST-TRANSF_BIN = SPACE.
  IT_PACKING_LIST-HEAD_START = 1 .
  IT_PACKING_LIST-HEAD_NUM =  0 .
  IT_PACKING_LIST-BODY_START = 1. "控制从第几行开始读
  IT_PACKING_LIST-BODY_NUM = SY_VLINE."控制读到第几行
  IT_PACKING_LIST-DOC_TYPE = 'RAW'.
  APPEND IT_PACKING_LIST.


***收件人信息
  IT_RECEIVERS-RECEIVER = 'MEIQIAN.LIANG@HAND-CHINA.COM'.  "收件人地址
  IT_RECEIVERS-REC_TYPE = 'U'.
  IT_RECEIVERS-COM_TYPE = 'INT'.
  IT_RECEIVERS-NOTIF_DEL =  'X'.
  IT_RECEIVERS-NOTIF_NDEL = 'X'.
  APPEND IT_RECEIVERS.

  CONCATENATE '物料'     LC_TAB
  '物料凭证' LC_TAB
  '物料描述' LC_TAB
  '年度'     LC_CTRL INTO LC_MAIL_ATTACH.   "lc_ctrl换行符

  CLEAR:MBLNR, MATNR, MJAHR, MAKTX.
  MBLNR  = '7777777'.
  MATNR  = '7777777'.
  MJAHR  = '7777'.
  MAKTX  = 'seven'."物料类型

  CONCATENATE LC_MAIL_ATTACH
  MATNR  LC_TAB
  MBLNR  LC_TAB
  MJAHR  LC_TAB
  MAKTX  LC_CTRL INTO LC_MAIL_ATTACH.      "lc_ctrl换行符

  CLEAR:MBLNR, MATNR, MJAHR, MAKTX.
  MBLNR  = '8888888'.
  MATNR  = '8888888'.
  MJAHR  = '8888'.
  MAKTX  = 'seven'."物料类型

  CONCATENATE LC_MAIL_ATTACH
  MATNR  LC_TAB
  MBLNR  LC_TAB
  MJAHR  LC_TAB
  MAKTX  LC_CTRL INTO LC_MAIL_ATTACH.      "lc_ctrl换行符

  MIMETYPE = 'APPLICATION/MSEXCEL;CHARSET=UTF-16LE'.
  CALL FUNCTION 'SCMS_STRING_TO_XSTRING'
    EXPORTING
      TEXT     = LC_MAIL_ATTACH
      MIMETYPE = MIMETYPE
    IMPORTING
      BUFFER   = LC_MAIL_XATTACH
    EXCEPTIONS
      FAILED   = 1
      OTHERS   = 2.

  IF SY-SUBRC = 0.
    CONCATENATE CL_ABAP_CHAR_UTILITIES=>BYTE_ORDER_MARK_LITTLE LC_MAIL_XATTACH INTO LC_MAIL_XATTACH IN BYTE MODE.
  ENDIF.

  CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' "将Xtring转化成二进制格式并保存到内表中
    EXPORTING
      BUFFER     = LC_MAIL_XATTACH
    TABLES
      BINARY_TAB = LT_CONTENT_HEX.

  "不知道干啥用的
  LT_OBJECT_HEADER = 'Seven test'.
  APPEND LT_OBJECT_HEADER.

  DESCRIBE TABLE LT_CONTENT_HEX LINES SY_VLINE.

  IT_PACKING_LIST-TRANSF_BIN = 'X'.
  IT_PACKING_LIST-HEAD_START = 1 .
  IT_PACKING_LIST-HEAD_NUM =  0 .
  IT_PACKING_LIST-BODY_START = 1.
  IT_PACKING_LIST-BODY_NUM = SY_VLINE.
  IT_PACKING_LIST-DOC_TYPE = 'XLS'.
  IT_PACKING_LIST-DOC_SIZE = 255 * SY_VLINE.
  IT_PACKING_LIST-OBJ_NAME = '附件名'.
  IT_PACKING_LIST-OBJ_DESCR = IT_PACKING_LIST-OBJ_NAME."文档名字
  APPEND IT_PACKING_LIST.


  "方法1  无法指定发送人邮箱
  CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
    EXPORTING
      DOCUMENT_DATA              = IT_DOCUMENT_DATA
      PUT_IN_OUTBOX              = 'X'
      COMMIT_WORK                = 'X'
    IMPORTING
      SENT_TO_ALL                = LV_SEND_ALL
*     NEW_OBJECT_ID              =
    TABLES
      PACKING_LIST               = IT_PACKING_LIST[]
      OBJECT_HEADER              = LT_OBJECT_HEADER[]
*     contents_bin               =
      CONTENTS_TXT               = IT_CONTENT_TEXT[]
      CONTENTS_HEX               = LT_CONTENT_HEX[]
*     object_para                =
*     object_parb                =
      RECEIVERS                  = IT_RECEIVERS[]
    EXCEPTIONS
      TOO_MANY_RECEIVERS         = 1
      DOCUMENT_NOT_SENT          = 2
      DOCUMENT_TYPE_NOT_EXIST    = 3
      OPERATION_NO_AUTHORIZATION = 4
      PARAMETER_ERROR            = 5
      X_ERROR                    = 6
      ENQUEUE_ERROR              = 7
      OTHERS                     = 8.

*  "方法2  可以指定发送人邮箱
*  CALL FUNCTION 'SO_DOCUMENT_SEND_API1'
*    EXPORTING
*      DOCUMENT_DATA              = IT_DOCUMENT_DATA
*      PUT_IN_OUTBOX              = 'X'
*      SENDER_ADDRESS             = 'MEIQIAN.LIANG@HAND-CHINA.COM'
*      SENDER_ADDRESS_TYPE        = 'INT'
*      COMMIT_WORK                = 'X'
**     IP_ENCRYPT                 =
**     IP_SIGN                    =
**     IV_VSI_PROFILE             =
*    IMPORTING
*      SENT_TO_ALL                = LV_SEND_ALL
**     NEW_OBJECT_ID              =
**     SENDER_ID                  =
*    TABLES
*      PACKING_LIST               = IT_PACKING_LIST[]
*      OBJECT_HEADER              = LT_OBJECT_HEADER[]
**     CONTENTS_BIN               =
*      CONTENTS_TXT               = IT_CONTENT_TEXT[]
*      CONTENTS_HEX               = LT_CONTENT_HEX[]
**     OBJECT_PARA                =
**     OBJECT_PARB                =
*      RECEIVERS                  = IT_RECEIVERS[]
**     ET_VSI_ERROR               =
*    EXCEPTIONS
*      TOO_MANY_RECEIVERS         = 1
*      DOCUMENT_NOT_SENT          = 2
*      DOCUMENT_TYPE_NOT_EXIST    = 3
*      OPERATION_NO_AUTHORIZATION = 4
*      PARAMETER_ERROR            = 5
*      X_ERROR                    = 6
*      ENQUEUE_ERROR              = 7
*      OTHERS                     = 8.
*  IF SY-SUBRC <> 0.
**   Implement suitable error handling here
*  ELSE.
*  BREAK-POINT.
*  ENDIF.

ENDFORM.                    "SEND_EMAIL

​

非面向对象运行效果图:

如果要抄送则增加以下属性:

2.2面向对象的方法


REPORT Z1234.

TABLES:MSEG,SSCRFIELDS,MARA,ZOWMS_DAYSTOCK_R,ADR6.
TYPE-POOLS:ICON,SLIS.


TYPES: BEGIN OF TYS_DETAIL,
         TOTAL(100),
         SEL(1),
         STATUS(4),
         ITEM_STATUS(4),
         CYMENG         TYPE MSEG-MENGE, "差异数量
         XCHAR          TYPE MARC-XCHAR, "批次管理标识
         MAKTX          TYPE MAKT-MAKTX,
         LGOBE          TYPE T001L-LGOBE,
         MEINS          TYPE MARA-MEINS,
         LABST          TYPE MARD-LABST. "SAP库存
        INCLUDE STRUCTURE ZOWMS_DAYSTOCK_R.
TYPES:     END OF TYS_DETAIL.
DATA: GT_DETAIL     TYPE STANDARD TABLE OF TYS_DETAIL,
      GT_DETAIL_TMP TYPE TABLE OF TYS_DETAIL,
      GT_DETAIL_KEY TYPE TABLE OF TYS_DETAIL.


DATA FUNCTXT TYPE SMP_DYNTXT.


DATA: I_BDCDATA   LIKE BDCDATA OCCURS 0 WITH HEADER LINE.

*ALV定义
DATA: GT_FIELDCAT TYPE LVC_T_FCAT,
      GV_CODE     LIKE SY-UCOMM,
      GW_LAYOUT   TYPE LVC_S_LAYO,
      I_CELLCLR   TYPE LVC_S_SCOL. "单元格颜色
TYPES: BEGIN OF SLIS_EXTAB,
         FCODE LIKE RSMPE-FUNC,
       END OF SLIS_EXTAB.
TYPES: SLIS_T_EXTAB TYPE SLIS_EXTAB OCCURS 1.
DATA:LS_CELLTAB TYPE LVC_S_STYL.
DATA LS_STABLE TYPE LVC_S_STBL.
DATA:GS_FIELDCAT TYPE LVC_S_FCAT.
DATA:GT_HEADER TYPE TABLE OF CHAR30,
     GV_CHAR30 TYPE CHAR30.
*子ALV调用
DATA:
  LT_FIELDCAT TYPE LVC_T_FCAT,
  LS_FCAT     TYPE LVC_S_FCAT,
  LS_SELFIELD TYPE SLIS_SELFIELD.



SELECTION-SCREEN BEGIN OF BLOCK BLK2 WITH FRAME TITLE TEXT-T02.
SELECT-OPTIONS: S_RECEP FOR ADR6-SMTP_ADDR NO INTERVALS
                                          MODIF ID MAL,"收件人
                S_SCR FOR ADR6-SMTP_ADDR  NO INTERVALS "抄送人
                                          MODIF ID MAL.
SELECTION-SCREEN END OF BLOCK BLK2 .


END-OF-SELECTION.


  PERFORM FRM_SEND_MAIL.



FORM FRM_SEND_MAIL .
  DATA: BCS_EXCEPTION        TYPE REF TO CX_BCS,
        ERRORTEXT            TYPE STRING,
        LCL_SEND_REQUEST     TYPE REF TO CL_BCS,
        LCL_DOCUMENT         TYPE REF TO CL_DOCUMENT_BCS,
        LCL_RECIPIENT        TYPE REF TO IF_RECIPIENT_BCS,
        LCL_SENDER           TYPE REF TO CL_CAM_ADDRESS_BCS,
        T_ATTACHMENT_HEADER  TYPE SOLI_TAB,
        WA_ATTACHMENT_HEADER LIKE LINE OF T_ATTACHMENT_HEADER,
        ATTACHMENT_SUBJECT   TYPE SOOD-OBJDES,
        SOOD_BYTECOUNT       TYPE SOOD-OBJLEN,
        MAIL_TITLE           TYPE SO_OBJ_DES,
        T_MAILTEXT           TYPE SOLI_TAB,
        WA_MAILTEXT          LIKE LINE OF T_MAILTEXT,
        SEND_TO              TYPE ADR6-SMTP_ADDR,
        SENT                 TYPE OS_BOOLEAN,
        LV_MAILNAME          TYPE SOOD-OBJDES,
        BINARY_CONTENT       TYPE SOLIX_TAB.
  DATA:LV_SMTP_ADDR          TYPE ADR6-SMTP_ADDR.

  " Set mail subject
  MAIL_TITLE     = '菜鸟&SAP库存比对邮件推送'.
  LV_MAILNAME = '菜鸟&SAP库存比对报表'.
  " Set mail context
  DATA(LV_STRING) = |您好,附件是菜鸟&SAP库存比对报表,请查阅,谢谢|.
  WA_MAILTEXT    = LV_STRING.

  APPEND WA_MAILTEXT TO T_MAILTEXT.
  CONCATENATE '事务码为:ZM390 程序为:ZMM390。' 'Job时间:' SY-DATUM '' SY-UZEIT INTO WA_MAILTEXT.
  APPEND WA_MAILTEXT TO T_MAILTEXT.

  TRY.
* Create send request
      LCL_SEND_REQUEST = CL_BCS=>CREATE_PERSISTENT( ).
* Create new document with mailtitle and mailtextg
      LCL_DOCUMENT = CL_DOCUMENT_BCS=>CREATE_DOCUMENT( I_TYPE    = 'RAW' "#EC NOTEXT
      I_TEXT    = T_MAILTEXT
      I_LANGUAGE = SY-LANGU
      I_SUBJECT = MAIL_TITLE ).

* add document to send request
      LCL_SEND_REQUEST->SET_DOCUMENT( LCL_DOCUMENT ).

*收件人
      LOOP AT S_RECEP.
        LV_SMTP_ADDR = S_RECEP-LOW.
        LCL_RECIPIENT = CL_CAM_ADDRESS_BCS=>CREATE_INTERNET_ADDRESS( LV_SMTP_ADDR  ).
        LCL_SEND_REQUEST->ADD_RECIPIENT( LCL_RECIPIENT ).
      ENDLOOP.

* 抄送人
      LOOP AT S_SCR.
        LV_SMTP_ADDR = S_SCR-LOW.
        LCL_RECIPIENT = CL_CAM_ADDRESS_BCS=>CREATE_INTERNET_ADDRESS( LV_SMTP_ADDR ).
        LCL_SEND_REQUEST->ADD_RECIPIENT(
        I_RECIPIENT  = LCL_RECIPIENT
        I_EXPRESS    = 'X'
        I_COPY       = 'X'
        I_BLIND_COPY = ' '
        I_NO_FORWARD = ' ' ).
      ENDLOOP.
*     添加抄送人

*lcl_document->
      CLEAR LV_STRING.
      PERFORM FRM_SET_DOCUMENT_BODY  CHANGING BINARY_CONTENT.

      LCL_DOCUMENT->ADD_ATTACHMENT(
      I_ATTACHMENT_TYPE    = 'XLS'                        " 附件格式
      I_ATTACHMENT_SUBJECT = LV_MAILNAME                  " 附件名称
*      i_attachment_size    = size                         "附件大小
      I_ATTACHMENT_LANGUAGE = SY-LANGU
*      I_ATTACHMENT_HEADER   =
      I_ATT_CONTENT_HEX    = BINARY_CONTENT
      ).            "附件内容


      LCL_SEND_REQUEST->SET_DOCUMENT( LCL_DOCUMENT ).
      SENT = LCL_SEND_REQUEST->SEND( I_WITH_ERROR_SCREEN = 'X' ).

    CATCH CX_BCS INTO BCS_EXCEPTION.
      ERRORTEXT = BCS_EXCEPTION->IF_MESSAGE~GET_TEXT( ).
      MESSAGE ERRORTEXT TYPE 'S' DISPLAY LIKE 'E'.
  ENDTRY.

  COMMIT WORK.

ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  FRM_SET_DOCUMENT_BODY
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      <--P_BINARY_CONTENT  text
*----------------------------------------------------------------------*
FORM FRM_SET_DOCUMENT_BODY  CHANGING PT_BODY TYPE SOLIX_TAB.
  TYPES: BEGIN OF TY_DATA,
           WERKS  TYPE ZOWMS_DAYSTOCK_R-WERKS, "工厂
           MATNR  TYPE ZOWMS_DAYSTOCK_R-MATNR, "物料
           MAKTX  TYPE MAKT-MAKTX,             "物料描述
           LGORT  TYPE ZOWMS_DAYSTOCK_R-LGORT, "库存地点
           LGOBE  TYPE T001L-LGOBE,            "库存地点描述
           CHARG  TYPE ZOWMS_DAYSTOCK_R-CHARG, "批次
           LABST  TYPE MARD-LABST,             "SAP库存数量
           OMENGE TYPE ZOWMS_DAYSTOCK_R-OMENGE, "未结库存
           WMENGE TYPE ZOWMS_DAYSTOCK_R-WMENGE, "OFS未传明细
           TMENGE TYPE ZOWMS_DAYSTOCK_R-TMENGE, "SAP库存数量(含未结)
           SMENGE TYPE ZOWMS_DAYSTOCK_R-SMENGE, "WMS库存数量
           CYMENG TYPE MSEG-MENGE.             "差异数量
  TYPES: END OF TY_DATA.

  DATA:LV_STRING   TYPE STRING,
       LC_MIMETYPE TYPE CHAR64 VALUE 'APPLICATION/MSEXCEL;charset=utf-16le',
       LV_XATTACH  TYPE XSTRING,
       LV_VALUE    TYPE STRING,
       LV_FLAG     TYPE C.
  DATA:LT_MAIL TYPE TABLE OF TY_DATA,
       LS_MAIL TYPE TY_DATA.

  CLEAR:GT_HEADER.

  APPEND '工厂' TO GT_HEADER.
  APPEND '物料' TO GT_HEADER.
  APPEND '物料描述' TO GT_HEADER.
  APPEND '库存地点' TO GT_HEADER.
  APPEND '库存地点描述' TO GT_HEADER.
  APPEND 'SAP库存数量' TO GT_HEADER.
  APPEND '未结库存' TO GT_HEADER.
  APPEND 'OFS未传SAP数量' TO GT_HEADER.
  APPEND 'SAP库存数量(含未结未传)' TO GT_HEADER.
  APPEND 'WMS库存数量' TO GT_HEADER.
  APPEND  '差异' TO GT_HEADER.

  LOOP AT GT_HEADER INTO GV_CHAR30.
    CONDENSE GV_CHAR30.
    LV_STRING = |{ LV_STRING }{ GV_CHAR30 }{ CL_ABAP_CHAR_UTILITIES=>HORIZONTAL_TAB }|.
  ENDLOOP.
  LV_STRING = LV_STRING && CL_ABAP_CHAR_UTILITIES=>CR_LF.

  "发送有差异的邮件数据
  MOVE-CORRESPONDING GT_DETAIL[] TO LT_MAIL[].
  DELETE  LT_MAIL[] WHERE CYMENG EQ '0.000'.
  "判断是否发送批次字段的数据
  DATA(LV_LINES1) = LINES( GT_HEADER ).
  IF LV_LINES1 = '11'.
    LV_FLAG = 'X'.
  ENDIF.

  DATA(LV_LINES) = LINES( GT_FIELDCAT ).

  LOOP AT LT_MAIL ASSIGNING FIELD-SYMBOL(<FS_STURC>).
    DO LV_LINES TIMES.
      IF SY-INDEX = 6 AND LV_FLAG = 'X'.
        CONTINUE.
      ENDIF.
      ASSIGN COMPONENT SY-INDEX OF STRUCTURE <FS_STURC> TO FIELD-SYMBOL(<FS_VALUE>).
      IF SY-SUBRC = 0.
        LV_VALUE = <FS_VALUE>.
        CONDENSE LV_VALUE.
        DATA(LV_LEN) = STRLEN( LV_VALUE ) - 1.
        IF LV_LEN > 0.
          IF LV_VALUE+LV_LEN = '-'.
            LV_VALUE = '-' && LV_VALUE(LV_LEN).
            CONDENSE LV_VALUE NO-GAPS.
            CLEAR LV_LEN.
          ENDIF.
        ENDIF.
      ELSE.
        LV_VALUE = ''.
      ENDIF.
      IF LV_LINES <> SY-INDEX.
        LV_STRING = |{ LV_STRING }{ LV_VALUE }{ CL_ABAP_CHAR_UTILITIES=>HORIZONTAL_TAB }|.
      ELSE.
        LV_STRING = |{ LV_STRING }{ LV_VALUE }{ CL_ABAP_CHAR_UTILITIES=>CR_LF }|.
      ENDIF.
    ENDDO.
  ENDLOOP.
  CALL FUNCTION 'SCMS_STRING_TO_XSTRING'
    EXPORTING
      TEXT     = LV_STRING
      MIMETYPE = LC_MIMETYPE
    IMPORTING
      BUFFER   = LV_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
    LV_XATTACH INTO LV_XATTACH IN BYTE MODE.
  ENDIF.
  CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'
    EXPORTING
      BUFFER     = LV_XATTACH
    TABLES
      BINARY_TAB = PT_BODY.
ENDFORM.

面向对象效果如下:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/601921.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

AI编码工具-通义灵码初识

AI编码工具-通义灵码初识 通义灵码支持环境及语言代码安全性 通义灵码安装通义灵码登录 关于通义灵码的初识&#xff0c;还是得从2023云栖大会来说起。2023云栖大会带来了跨越式升级的千亿级参数规模大模型——通义千问2.0&#xff0c;随之而来的便有通义灵码&#xff0c;那么什…

SpringBoot项目配置HTTPS接口的安全访问

参考&#xff1a;https://blog.csdn.net/weixin_45355769/article/details/131727935 安装好openssl后&#xff0c; 创建 D:\certificate CA文件夹下包含&#xff1a; index.txt OpenSSL在创建自签证书时会向该文件里写下索引database.txt OpenSSL会模拟数据库将一些敏感信息…

嵌入式移植7Z解压缩(纯C)

本文分享一个纯C语言编写的7Z解压缩代码库&#xff0c;本代码库的主要目的是在嵌入式环境下使用7z解压缩文件&#xff0c;可以将升级包通过7z进行压缩&#xff0c;然后发送给设备&#xff0c;减小和设备传输过程中的文件大小&#xff0c;进而达到传输大文件的目的。 下载链接 …

2024年最佳音频处理软件盘点!助你事半功倍

在数字媒体时代&#xff0c;音频处理软件已经成为音乐制作、音频编辑和后期处理不可或缺的工具。这些软件具备强大的功能&#xff0c;能帮助用户轻松实现声音的剪辑、混音、特效处理以及音频格式转换等操作。本文将为你介绍音频处理软件的基本概念、功能特点以及常用软件&#…

【@ohos.events.emitter (Emitter)】

ohos.events.emitter (Emitter) 本模块提供了在同一进程不同线程间&#xff0c;或同一进程同一线程内&#xff0c;发送和处理事件的能力&#xff0c;包括持续订阅事件、单次订阅事件、取消订阅事件&#xff0c;以及发送事件到事件队列的能力。 说明&#xff1a; 本模块首批接…

实时Linux对EtherCAT工业自动化协议的支持

在自动化技术和工业控制领域&#xff0c;实时通信网络的重要性不断增长。EtherCAT&#xff08;Ethernet for Control Automation Technology&#xff09;作为一种高效的工业以太网通信协议&#xff0c;因其出色的性能和灵活性而广受欢迎。而实时Linux作为影响最为广泛的开源实时…

【Web前端】盒子模型_元素分类_表格

1、盒子模型 1.1简介 CSS盒子模型是在网页设计中经常用到的CSS技术所使用的一种思维模型。包括内容(content)、内边距(padding)、边框(border)、外边距(margin) 1.2边框&#xff08;border&#xff09; 1.2.1简介 边框是环绕内容区和填充的边界。边框的属性有border-style、…

Pytorch 实现情感分析

情感分析 情感分析是 NLP 一种应用场景&#xff0c;模型判断输入语句是积极的还是消极的&#xff0c;实际应用适用于评论、客服等多场景。情感分析通过 transformer 架构中的 encoder 层再加上情感分类层进行实现。 安装依赖 需要安装 Poytorch NLP 相关依赖 pip install t…

免费SSL证书?轻松申请攻略来了!

在当今的互联网时代&#xff0c;网络安全已经成为一个不容忽视的重要课题。随着在线交流和交易活动的增加&#xff0c;保护网站和用户信息的重要性日益突显。SSL证书&#xff0c;即安全套接字层证书&#xff0c;它为互联网通信提供了加密服务&#xff0c;确保数据的安全性和完整…

光伏远动通讯屏的组成

光伏远动通讯屏的组成 远动通讯屏主要用于电力系统数据采集与转发&#xff0c;远动通讯屏能够采集站内的各种数据&#xff0c;如模拟量、开关量和数字量等&#xff0c;并通过远动通讯规约将必要的数据上传至集控站或调度系统。这包括但不限于主变和输电线路的功率、电流、电压等…

怎么设置一天多个时间点的闹钟提醒?

在日常生活中&#xff0c;我们经常需要在一天的不同时间点完成特定的任务&#xff0c;如定时喝水、定时查看后台数据、定时吃药等。这时候&#xff0c;如果能有一款软件&#xff0c;可以在一条日程里轻松设置多个时间点的闹钟提醒&#xff0c;那将大大提高我们的工作效率和生活…

如何理解GTX接收通道相关模块?(高速收发器三)

前文讲解了GTX的时钟及发送通道相关内容&#xff0c;本文讲解GTX接收通道的一些功能及其IP配置&#xff0c;接收往往比发送设计更难&#xff0c;与调制解调&#xff0c;加密解密其实相差不大&#xff0c;后者难度都比前者高出很多。GTX的接收通道的功能相比发送通道更加重要&am…

西奥CHT-01软胶囊硬度测试仪:重塑行业标杆,引领硬度测试新纪元

西奥CHT-01软胶囊硬度测试仪&#xff1a;重塑行业标杆&#xff0c;引领硬度测试新纪元 在当今医药领域&#xff0c;软胶囊作为一种广泛应用的药品剂型&#xff0c;其品质的稳定性和安全性直接关系到患者的健康。而在确保软胶囊品质的各项指标中&#xff0c;硬度测试尤为关键。…

AIGC实战——多模态模型DALL.E 2

AIGC实战——多模态模型DALL.E 2 0. 前言1. 模型架构2. 文本编码器3. CLIP4. 先验模型4.1 自回归先验模型4.2 扩散先验模型 5. 解码器5.1 GLIDE5.2 上采样器 6. DALL.E 2 应用6.1 图像变体6.2 先验模型的重要性6.3 DALL.E 2 限制 小结系列链接 0. 前言 DALL.E 2 是 OpenAI 设计…

领域驱动设计架构演进

领域驱动设计由于其强调对领域的深入理解和关注业务价值,其架构演进依赖于领域的变化和特定领域中的技术实践。 初始阶段 一个单体架构,所有的功能都集成在一个应用程序中,领域模型可能还不完全清晰,甚至并未形成。这个阶段主要是为了验证产品的可行性,快速迭代并尽快推…

有没有国内个人可用的GPT平替?推荐5个AI工具

随着AI技术的快速发展&#xff0c;AI写作正成为创作的新风口。但是面对GPT-4这样的国际巨头&#xff0c;国内很多小伙伴往往望而却步&#xff0c;究其原因&#xff0c;就是它的使用门槛高&#xff0c;还有成本的考量。 不过&#xff0c;随着GPT技术的火热&#xff0c;国内也涌…

2023年度合肥市优秀知识产权服务机构评选申报主体条件、材料和时间程序须知

一、申报主体 在合肥市行政区域内登记注册的知识产权服务机构&#xff0c; 二、申报条件 (一)在合肥市登记注册时间满1年&#xff0c;营业执照经营范围包含知识产权代理、服务等相关内容; (二)在全国专利代理信息公示平台进行备案; (三)有稳定的专业服务人才队伍和服务对象…

【SSL证书】免费单域名SSL证书怎么申请

1、访问证书颁发机构&#xff08;CA&#xff09;&#xff1a;比如JoySSL、ZeroSSL、各大云平台等&#xff0c;这些机构提供免费的SSL证书申请&#xff0c;并支持单域名证书。在网站上注册账号&#xff0c;并根据提示选择单域名证书进行申请。 &#xff01;&#xff01;&#xf…

工厂模式应用实例

引言 设计模式概念 设计模式&#xff08;Design Pattern&#xff09;的官方概念可以表述为&#xff1a;在软件设计中&#xff0c;设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。它是针对特定问题或特定场景的解决方案&#xff0c;是一种经过…

使用STM32CubeMX进行STM32F4的定时器配置

目录 1. Pin脚2. 配置2.1 时钟配置2.2 RCC配置2.3 Timer配置2.4 输出文件 3. 代码3.1 使能定时器3.2 回调函数 1. Pin脚 2. 配置 2.1 时钟配置 timer3时钟挂载在APB1上&#xff1a; 时钟配置如下&#xff1a; 外部使用8MHz晶振 开启内部16MHz晶振 使用锁相环 开启最高100MHz。…