使用 Mule 4 在单个电子邮件中动态附加多个 csv 文件
Attaching multiple csv files dynamically in a single email using Mule 4
我需要为每笔交易提取 CSV 数据,并使用 SMTP 连接器将提取的 csv 文件作为多个附件发送到一封电子邮件中。
能否请您告诉我,如何根据事务数组动态提取 CSV 负载并分别访问它们以发送以下格式的附件。
我正在使用 DW 2.0/Mule 4
{
"data1.csv":vars.csvExtract1,
"data2.csv":vars.csvExtract2
}
输入载荷如下。
{
"Header": {
"From": {
"@description": "Networks",
"#text": "Networks"
},
"To": {
"@description": "Retail",
"#text": "Retail"
},
"MessageID": "735-MSG",
"MessageDate": "2005-01-01T12:00:00+10:00",
},
"Transactions": [
{
"@transactionID": "46735",
"@transactionDate": "2002-01-01T12:00:00+10:00",
"WorkNotification": {
"@version": "r9",
"CSVMainsServiceRenewal": {
"RecordCount": "3",
"CSVData": "NMI,NMI_Checksum,Planned_Outage_Commencement_Date,Planned_Outage_Commencement_Time,Duration_of_Outage\n5767656543,7,2015-09-26,15:09:00,11\n5240667197,0,2012-11-02,12:13:00,2\n5240494248,7,2013-01-01,12:13:00,2"
}
}
},
{
"@transactionID": "46739",
"@transactionDate": "2002-01-01T12:00:00+10:00",
"WorkNotification": {
"@version": "r9",
"CSVMainsServiceRenewal": {
"RecordCount": "3",
"CSVData": "NMI,NMI_Checksum,Planned_Outage_Commencement_Date,Planned_Outage_Commencement_Time,Duration_of_Outage\n5767656543,7,2015-09-26,15:09:00,11\n5240667197,0,2012-11-02,12:13:00,2\n5240494248,7,2013-01-01,12:13:00,2"
}
}
}
]
}
谢谢,
试试这个。这会将键 CSVData 的值分配给名为 data$$.csv 的每个事务的键(在地图的每次迭代中递增)。这就是你想要的吗?
%dw 2.0
output application/json
---
payload.Transactions map {
'data$$.csv': $.WorkNotification.CSVMainsServiceRenewal.CSVData
} reduce ((item, acc = {}) -> acc ++ item)
你能试试下面的dwl吗
%dw 2.0
output application/json
var payload= {
"Header": {
"From": {
"@description": "Networks",
"#text": "Networks"
},
"To": {
"@description": "Retail",
"#text": "Retail"
},
"MessageID": "735-MSG",
"MessageDate": "2005-01-01T12:00:00+10:00",
},
"Transactions": [
{
"@transactionID": "46735",
"@transactionDate": "2002-01-01T12:00:00+10:00",
"WorkNotification": {
"@version": "r9",
"CSVMainsServiceRenewal": {
"RecordCount": "3","CSVData":"NMI,NMI_Checksum,Planned_Outage_Commencement_Date,Planned_Outage_Commencement_Time,Duration_of_Outage\n5767656543,7,2015-09-26,15:09:00,11\n5240667197,0,2012-11-02,12:13:00,2\n5240494248,7,2013-01-01,12:13:00,2"
}
}
},
{
"@transactionID": "46739",
"@transactionDate": "2002-01-01T12:00:00+10:00",
"WorkNotification": {
"@version": "r9",
"CSVMainsServiceRenewal": {
"RecordCount": "3",
"CSVData": "NMI,NMI_Checksum,Planned_Outage_Commencement_Date,Planned_Outage_Commencement_Time,Duration_of_Outage\n5767656543,7,2015-09-26,15:09:00,11\n5240667197,0,2012-11-02,12:13:00,2\n5240494248,7,2013-01-01,12:13:00,2"
}
}
}
]
}
---
{(payload.Transactions map {
"$(payload.Header.From.'#text' ++ '_' ++
payload.Header.To.'#text' ++ '_' ++
now() as String {format : 'yyyyMMdd'} ++ (if ($$ as Number < 9) '_0' else '_')
++ '$$' as Number + 1).csv" :
$.WorkNotification.CSVMainsServiceRenewal.CSVData
})}
输出为
{
"Networks_Retail_20201009_1.csv": "NMI,NMI_Checksum,Planned_Outage_Commencement_Date,Planned_Outage_Commencement_Time,Duration_of_Outage\n5767656543,7,2015-09-26,15:09:00,11\n5240667197,0,2012-11-02,12:13:00,2\n5240494248,7,2013-01-01,12:13:00,2",
"Networks_Retail_20201009_2.csv": "NMI,NMI_Checksum,Planned_Outage_Commencement_Date,Planned_Outage_Commencement_Time,Duration_of_Outage\n5767656543,7,2015-09-26,15:09:00,11\n5240667197,0,2012-11-02,12:13:00,2\n5240494248,7,2013-01-01,12:13:00,2"
}
此致,
洛克什
您可以尝试以下方法:
Header 真
{(payload.Transactions map {
"$(payload.Header.From.'#text' ++ '_' ++
payload.Header.To.'#text' ++ '_' ++
now() as String {format : 'yyyyMMdd'} ++ (if ($$ as Number < 9) '_0' else '_')
++ '$$' as Number + 1).csv" :
read($.WorkNotification.CSVMainsServiceRenewal.CSVData,"application/csv",{"header": "true"})
})}
输出:
{
"Networks_Retail_20201011_01.csv": [
{
"NMI": "5767656543",
"NMI_Checksum": "7",
"Planned_Outage_Commencement_Date": "2015-09-26",
"Planned_Outage_Commencement_Time": "15:09:00",
"Duration_of_Outage": "11"
},
{
"NMI": "5240667197",
"NMI_Checksum": "0",
"Planned_Outage_Commencement_Date": "2012-11-02",
"Planned_Outage_Commencement_Time": "12:13:00",
"Duration_of_Outage": "2"
},
{
"NMI": "5240494248",
"NMI_Checksum": "7",
"Planned_Outage_Commencement_Date": "2013-01-01",
"Planned_Outage_Commencement_Time": "12:13:00",
"Duration_of_Outage": "2"
}
],
"Networks_Retail_20201011_02.csv": [
{
"NMI": "5767656543",
"NMI_Checksum": "7",
"Planned_Outage_Commencement_Date": "2015-09-26",
"Planned_Outage_Commencement_Time": "15:09:00",
"Duration_of_Outage": "11"
},
{
"NMI": "5240667197",
"NMI_Checksum": "0",
"Planned_Outage_Commencement_Date": "2012-11-02",
"Planned_Outage_Commencement_Time": "12:13:00",
"Duration_of_Outage": "2"
},
{
"NMI": "5240494248",
"NMI_Checksum": "7",
"Planned_Outage_Commencement_Date": "2013-01-01",
"Planned_Outage_Commencement_Time": "12:13:00",
"Duration_of_Outage": "2"
}
]
}
Header 假
{(payload.Transactions map {
"$(payload.Header.From.'#text' ++ '_' ++
payload.Header.To.'#text' ++ '_' ++
now() as String {format : 'yyyyMMdd'} ++ (if ($$ as Number < 9) '_0' else '_')
++ '$$' as Number + 1).csv" :
read($.WorkNotification.CSVMainsServiceRenewal.CSVData,"application/csv",{"header": "false"})
})}
输出:
{
"Networks_Retail_20201011_01.csv": [
{
"column_0": "NMI",
"column_1": "NMI_Checksum",
"column_2": "Planned_Outage_Commencement_Date",
"column_3": "Planned_Outage_Commencement_Time",
"column_4": "Duration_of_Outage"
},
{
"column_0": "5767656543",
"column_1": "7",
"column_2": "2015-09-26",
"column_3": "15:09:00",
"column_4": "11"
},
{
"column_0": "5240667197",
"column_1": "0",
"column_2": "2012-11-02",
"column_3": "12:13:00",
"column_4": "2"
},
{
"column_0": "5240494248",
"column_1": "7",
"column_2": "2013-01-01",
"column_3": "12:13:00",
"column_4": "2"
}
],
"Networks_Retail_20201011_02.csv": [
{
"column_0": "NMI",
"column_1": "NMI_Checksum",
"column_2": "Planned_Outage_Commencement_Date",
"column_3": "Planned_Outage_Commencement_Time",
"column_4": "Duration_of_Outage"
},
{
"column_0": "5767656543",
"column_1": "7",
"column_2": "2015-09-26",
"column_3": "15:09:00",
"column_4": "11"
},
{
"column_0": "5240667197",
"column_1": "0",
"column_2": "2012-11-02",
"column_3": "12:13:00",
"column_4": "2"
},
{
"column_0": "5240494248",
"column_1": "7",
"column_2": "2013-01-01",
"column_3": "12:13:00",
"column_4": "2"
}
]
}
我需要为每笔交易提取 CSV 数据,并使用 SMTP 连接器将提取的 csv 文件作为多个附件发送到一封电子邮件中。
能否请您告诉我,如何根据事务数组动态提取 CSV 负载并分别访问它们以发送以下格式的附件。
我正在使用 DW 2.0/Mule 4
{
"data1.csv":vars.csvExtract1,
"data2.csv":vars.csvExtract2
}
输入载荷如下。
{
"Header": {
"From": {
"@description": "Networks",
"#text": "Networks"
},
"To": {
"@description": "Retail",
"#text": "Retail"
},
"MessageID": "735-MSG",
"MessageDate": "2005-01-01T12:00:00+10:00",
},
"Transactions": [
{
"@transactionID": "46735",
"@transactionDate": "2002-01-01T12:00:00+10:00",
"WorkNotification": {
"@version": "r9",
"CSVMainsServiceRenewal": {
"RecordCount": "3",
"CSVData": "NMI,NMI_Checksum,Planned_Outage_Commencement_Date,Planned_Outage_Commencement_Time,Duration_of_Outage\n5767656543,7,2015-09-26,15:09:00,11\n5240667197,0,2012-11-02,12:13:00,2\n5240494248,7,2013-01-01,12:13:00,2"
}
}
},
{
"@transactionID": "46739",
"@transactionDate": "2002-01-01T12:00:00+10:00",
"WorkNotification": {
"@version": "r9",
"CSVMainsServiceRenewal": {
"RecordCount": "3",
"CSVData": "NMI,NMI_Checksum,Planned_Outage_Commencement_Date,Planned_Outage_Commencement_Time,Duration_of_Outage\n5767656543,7,2015-09-26,15:09:00,11\n5240667197,0,2012-11-02,12:13:00,2\n5240494248,7,2013-01-01,12:13:00,2"
}
}
}
]
}
谢谢,
试试这个。这会将键 CSVData 的值分配给名为 data$$.csv 的每个事务的键(在地图的每次迭代中递增)。这就是你想要的吗?
%dw 2.0
output application/json
---
payload.Transactions map {
'data$$.csv': $.WorkNotification.CSVMainsServiceRenewal.CSVData
} reduce ((item, acc = {}) -> acc ++ item)
你能试试下面的dwl吗
%dw 2.0
output application/json
var payload= {
"Header": {
"From": {
"@description": "Networks",
"#text": "Networks"
},
"To": {
"@description": "Retail",
"#text": "Retail"
},
"MessageID": "735-MSG",
"MessageDate": "2005-01-01T12:00:00+10:00",
},
"Transactions": [
{
"@transactionID": "46735",
"@transactionDate": "2002-01-01T12:00:00+10:00",
"WorkNotification": {
"@version": "r9",
"CSVMainsServiceRenewal": {
"RecordCount": "3","CSVData":"NMI,NMI_Checksum,Planned_Outage_Commencement_Date,Planned_Outage_Commencement_Time,Duration_of_Outage\n5767656543,7,2015-09-26,15:09:00,11\n5240667197,0,2012-11-02,12:13:00,2\n5240494248,7,2013-01-01,12:13:00,2"
}
}
},
{
"@transactionID": "46739",
"@transactionDate": "2002-01-01T12:00:00+10:00",
"WorkNotification": {
"@version": "r9",
"CSVMainsServiceRenewal": {
"RecordCount": "3",
"CSVData": "NMI,NMI_Checksum,Planned_Outage_Commencement_Date,Planned_Outage_Commencement_Time,Duration_of_Outage\n5767656543,7,2015-09-26,15:09:00,11\n5240667197,0,2012-11-02,12:13:00,2\n5240494248,7,2013-01-01,12:13:00,2"
}
}
}
]
}
---
{(payload.Transactions map {
"$(payload.Header.From.'#text' ++ '_' ++
payload.Header.To.'#text' ++ '_' ++
now() as String {format : 'yyyyMMdd'} ++ (if ($$ as Number < 9) '_0' else '_')
++ '$$' as Number + 1).csv" :
$.WorkNotification.CSVMainsServiceRenewal.CSVData
})}
输出为
{
"Networks_Retail_20201009_1.csv": "NMI,NMI_Checksum,Planned_Outage_Commencement_Date,Planned_Outage_Commencement_Time,Duration_of_Outage\n5767656543,7,2015-09-26,15:09:00,11\n5240667197,0,2012-11-02,12:13:00,2\n5240494248,7,2013-01-01,12:13:00,2",
"Networks_Retail_20201009_2.csv": "NMI,NMI_Checksum,Planned_Outage_Commencement_Date,Planned_Outage_Commencement_Time,Duration_of_Outage\n5767656543,7,2015-09-26,15:09:00,11\n5240667197,0,2012-11-02,12:13:00,2\n5240494248,7,2013-01-01,12:13:00,2"
}
此致, 洛克什
您可以尝试以下方法:
Header 真
{(payload.Transactions map {
"$(payload.Header.From.'#text' ++ '_' ++
payload.Header.To.'#text' ++ '_' ++
now() as String {format : 'yyyyMMdd'} ++ (if ($$ as Number < 9) '_0' else '_')
++ '$$' as Number + 1).csv" :
read($.WorkNotification.CSVMainsServiceRenewal.CSVData,"application/csv",{"header": "true"})
})}
输出:
{
"Networks_Retail_20201011_01.csv": [
{
"NMI": "5767656543",
"NMI_Checksum": "7",
"Planned_Outage_Commencement_Date": "2015-09-26",
"Planned_Outage_Commencement_Time": "15:09:00",
"Duration_of_Outage": "11"
},
{
"NMI": "5240667197",
"NMI_Checksum": "0",
"Planned_Outage_Commencement_Date": "2012-11-02",
"Planned_Outage_Commencement_Time": "12:13:00",
"Duration_of_Outage": "2"
},
{
"NMI": "5240494248",
"NMI_Checksum": "7",
"Planned_Outage_Commencement_Date": "2013-01-01",
"Planned_Outage_Commencement_Time": "12:13:00",
"Duration_of_Outage": "2"
}
],
"Networks_Retail_20201011_02.csv": [
{
"NMI": "5767656543",
"NMI_Checksum": "7",
"Planned_Outage_Commencement_Date": "2015-09-26",
"Planned_Outage_Commencement_Time": "15:09:00",
"Duration_of_Outage": "11"
},
{
"NMI": "5240667197",
"NMI_Checksum": "0",
"Planned_Outage_Commencement_Date": "2012-11-02",
"Planned_Outage_Commencement_Time": "12:13:00",
"Duration_of_Outage": "2"
},
{
"NMI": "5240494248",
"NMI_Checksum": "7",
"Planned_Outage_Commencement_Date": "2013-01-01",
"Planned_Outage_Commencement_Time": "12:13:00",
"Duration_of_Outage": "2"
}
]
}
Header 假
{(payload.Transactions map {
"$(payload.Header.From.'#text' ++ '_' ++
payload.Header.To.'#text' ++ '_' ++
now() as String {format : 'yyyyMMdd'} ++ (if ($$ as Number < 9) '_0' else '_')
++ '$$' as Number + 1).csv" :
read($.WorkNotification.CSVMainsServiceRenewal.CSVData,"application/csv",{"header": "false"})
})}
输出:
{
"Networks_Retail_20201011_01.csv": [
{
"column_0": "NMI",
"column_1": "NMI_Checksum",
"column_2": "Planned_Outage_Commencement_Date",
"column_3": "Planned_Outage_Commencement_Time",
"column_4": "Duration_of_Outage"
},
{
"column_0": "5767656543",
"column_1": "7",
"column_2": "2015-09-26",
"column_3": "15:09:00",
"column_4": "11"
},
{
"column_0": "5240667197",
"column_1": "0",
"column_2": "2012-11-02",
"column_3": "12:13:00",
"column_4": "2"
},
{
"column_0": "5240494248",
"column_1": "7",
"column_2": "2013-01-01",
"column_3": "12:13:00",
"column_4": "2"
}
],
"Networks_Retail_20201011_02.csv": [
{
"column_0": "NMI",
"column_1": "NMI_Checksum",
"column_2": "Planned_Outage_Commencement_Date",
"column_3": "Planned_Outage_Commencement_Time",
"column_4": "Duration_of_Outage"
},
{
"column_0": "5767656543",
"column_1": "7",
"column_2": "2015-09-26",
"column_3": "15:09:00",
"column_4": "11"
},
{
"column_0": "5240667197",
"column_1": "0",
"column_2": "2012-11-02",
"column_3": "12:13:00",
"column_4": "2"
},
{
"column_0": "5240494248",
"column_1": "7",
"column_2": "2013-01-01",
"column_3": "12:13:00",
"column_4": "2"
}
]
}