使用 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"
    }
  ]
}