【发布时间】:2021-04-22 02:31:51
【问题描述】:
我正在尝试实现一个 Rest API 以使用 SMTP 连接器发送任何类型的电子邮件(带或不带附件)。我希望系统电子邮件 API 从请求正文中动态获取电子邮件内容。
在我的客户端应用程序中,我正在构建如下的 json 结构。
%dw 2.0
import toBase64 from dw::core::Binaries
output application/json
---
{
"body": {
"fromAddress": "abcmule01@outlook.com",
"toAddress": Mule::p('email.to') splitBy ",",
"subject": Mule::p('email.subject'),
"content": payload,
"contentType": "text/html",
"encoding": "UTF-8",
"contentTransferEncoding": "Base64",
"attachments": {
"txtAttachment": vars.textPlain,
"csvAttachment": vars.csvPayload
},
"smtpHost": Mule::p('smtp.host'),
"smtpPort": Mule::p('smtp.port'),
"smtpUser": Mule::p('smtp.username'),
"smtpPassword": Mule::p('smtp.password')
},
"header": {
"apiName": "test-email-flow",
"apiVersion": "1.0",
"transactionId": "test-12345",
"correlationId": "test-12345"
}
}
该功能仅适用于发送文本附件但是,如果我尝试发送 CSV 内容,则该内容无法在电子邮件附件中正确显示。
只是为了测试,我正在读取一个 CSV 文件并构建 CSV 内容 (vars.csvPayload),如下所示。
应用程序/csv;字符集=UTF-8;标题=“假”
Belinda Jameson,2017,Cushing House,148,3.52
Jeff Smith,2018,Prescott House,17-D,3.20
Sandy Allen,2019,Oliver House,108,3.48
转换后的附件请求结构如下。
"attachments": {
"txtAttachment": "This is the email text attachment",
"csvAttachment": [
{
"column_0": "Belinda Jameson",
"column_1": "2017",
"column_2": "Cushing House",
"column_3": "148",
"column_4": "3.52"
},
{
"column_0": "Jeff Smith",
"column_1": "2018",
"column_2": "Prescott House",
"column_3": "17-D",
"column_4": "3.20"
},
{
"column_0": "Sandy Allen",
"column_1": "2019",
"column_2": "Oliver House",
"column_3": "108",
"column_4": "3.48"
}
]
}
但是,当我将“附件”传递给系统电子邮件 API 中的电子邮件发送组件时,它没有以正确的格式显示 csv 内容。你能帮我构建附件的请求结构吗?
下面是发送邮件子流程的xml配置文件
<sub-flow name="sapi-core-email-send-mail-implementation" doc:id="177de084-c73b-4be1-ab10-90479ca98d5d" >
<ee:transform doc:name="Transform Message" doc:id="207cdb76-fc5e-47b1-bebd-1cc75f50a5d0" >
<ee:message >
</ee:message>
<ee:variables >
<ee:set-variable variableName="emailTo" ><![CDATA[%dw 2.0
output application/json
---
"deeps.test@test.net.au,deeps2@test.net.au" splitBy ","]]></ee:set-variable>
<ee:set-variable variableName="port" ><![CDATA[%dw 2.0
output application/java
---
payload.body.smtpPort]]></ee:set-variable>
<ee:set-variable variableName="username" ><![CDATA[%dw 2.0
output application/java
---
payload.body.smtpUser]]></ee:set-variable>
<ee:set-variable variableName="password" ><![CDATA[%dw 2.0
output application/java
---
payload.body.smtpPassword]]></ee:set-variable>
<ee:set-variable variableName="host" ><![CDATA[%dw 2.0
output application/java
---
payload.body.smtpHost]]></ee:set-variable>
</ee:variables>
</ee:transform>
<set-payload value='#[payload.body.content replace /([\r,\t,\n,"\"])/ with ""]' doc:name="Set Payload" doc:id="98c98bac-da72-4b9f-9207-5bab35ac228c" mimeType="text/html" encoding="UTF-8"/>
<email:send doc:name="Send" doc:id="b3318d9e-e0ca-4750-9cb5-3bd7cb9ccdca" fromAddress="#[vars.requestBody.fromAddress]" toAddresses="#[vars.requestBody.toAddress]" subject="#[vars.requestBody.subject]" ccAddresses="#[vars.requestBody.ccAddress]" bccAddresses="#[vars.requestBody.bccAddress]" replyToAddresses="#[vars.requestBody.replyToAddress]" config-ref="Email_SMTP_Sapi_Core_Email">
<email:body contentType="#[vars.requestBody.contentType]" encoding="#[vars.requestBody.encoding]" contentTransferEncoding="#[vars.requestBody.contentTransferEncoding]" >
</email:body>
<email:attachments ><![CDATA[#[vars.requestBody.attachments]]]></email:attachments>
</email:send>
<logger level="INFO" doc:name="Logger" doc:id="7a8d82aa-a23e-4bf9-bbad-26deb046c92f" message="Email has been successfully sent"/>
</sub-flow>
并且 csv 附件内容在电子邮件附件中如下所示
¬í sr java.util.ArrayListxÒ™Ça I sizexp w sr java.util.LinkedHashMap4ÀN\lÀû Z accessOrderxr java.util.HashMapÚÁÃ`Ñ F
loadFactorI thresholdxp?@ w t column_0t Belinda Jamesont column_1t 2017t column_2t
Cushing Houset column_3t 148t column_4t 3.52x sq ~ ?@ w t column_0t
Jeff Smitht column_1t 2018t column_2t Prescott Houset column_3t 17-Dt column_4t 3.20x sq ~ ?@ w t column_0t Sandy Allent column_1t 2019t column_2t Oliver Houset column_3t 108t column_4t 3.48x x
【问题讨论】:
-
收到的电子邮件中的附件内容是什么样的?能否分享一下 Email Send 组件的 xml 配置?
-
感谢您的回复,我已经提供了更多详细信息。请检查。
-
你能分享你构建附件变量的sn-p吗?
-
我只是想读取一个csv文件(test.csv)来构造csvPayload变量。