HCI发送带有多个附件的邮件

2020-09-05 21:54发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)专家您好, 我是HCI的新手。...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


专家您好,

我是HCI的新手。

我们需要调用Soap服务,然后在响应消息中包含attachemnt base64字符串。

我引用了Morten Wittrock的提示#添加 代码中的云集成附件。

一个附件可以正常工作,但是多个附件存在一些问题。

我的流程:(通过附件密钥获取附件)

两个附件密钥->迭代拆分器->本地呼叫-> Grather

本地通话:

外部呼叫(获取附件)->设置附件->结束

但是我只能收到第一个附件密钥的附件。

我想念什么?

期待您的回复。 :)

非常感谢。

Nero。

5条回答
小c菟菟
2020-09-05 22:22 .采纳回答

嗨,Nero

代码无法正常工作的原因是,Splitter循环创建了新消息。 这意味着将每个附件添加到新邮件中; 不是您想要的。

您可能要做的是使用"收集"步骤来创建包含Base64编码附件的有效负载。 像这样:

 <?xml version =" 1.0" encoding =" UTF-8"?>
 <附件>
     <附件>
          ... 
          ... 
     
     <附件>
          ... 
          ... 
     
     <附件>
          ... 
          ... 
     
 
 

然后,您可以在"收集"步骤之后添加一个"脚本"步骤,该步骤分析XML,解码Base64并添加附件。 像这样的东西:

导入com.sap.gateway.ip.core.customdev.util.Message
 导入org.apache.camel.impl.DefaultAttachment
 导入javax.mail.util.ByteArrayDataSource

 def消息processData(消息消息){
     def主体= message.getBody(java.lang.String)
     def附件=新的XmlSlurper()。parseText(body)
     attachments.attachment.each {附件->
         def id = attachment.id.text()
         def字节= attachment.base64.text()。decodeBase64()
         def dataSource =新的ByteArrayDataSource(bytes,'application/octet-stream')
         def附件=新的DefaultAttachment(dataSource)
         message.addAttachmentObject(id,附件)
     }
     返回讯息
 } 

如果您知道实际的MIME类型,请用正确的MIME类型替换application/octet-stream。

让我知道它的工作原理。

稍后添加:请通过 Vadim Klimov 查看以下评论​​。 如果您检索大型和/或许多附件,它们将被作为一条消息处理,这可能会损害性能。

问候,

Morten

一周热门 更多>