Mule集成Outlook 365发送CSV附件自动添表头问题求助
解决Mule中Outlook 365连接器自动给CSV附件添加表头的问题
问题场景
在Mule集成开发中,需生成无表头的CSV文件并通过Outlook 365连接器作为邮件附件发送。使用DataWeave 2.0设置output application/csv header = false生成的CSV内容无表头,日志及本地文件验证均正常,但通过Outlook 365连接器发送后,接收方收到的附件被自动添加了column_0、column_1格式的表头。
示例请求Payload
[ { "Code": "SDEN1001107GR", "UnitUsagesUsage": "Days", "Group": "Blank", "Category": "A", "Description": "Dense 100mm", "Rate": "0" } ]
原发送附件的DataWeave代码
%dw 2.0 import * from dw::core::Binaries output application/json --- { "message": { "subject": "Summary-" ++ now() as String { "format": "yyyyMMdd" }, "body": { "contentType": "Text", "content": "Please find attached summary" }, "toRecipients": [{ "emailAddress": { "address": p('outlook.toRecipients') } }], "attachments": [{ "@odata.type": "#microsoft.graph.fileAttachment", "name": "service-data.csv", "contentType": "application/csv", "contentBytes": toBase64(write(payload, "application/csv")) }] }, "saveToSentItems": "true" }
接收方收到的附件内容示例
column_0,column_1,column_2,column_3,column_4,column_5,column_6,column_7,column_8,column_9,column_10,column_11,column_12,column_13,column_14,column_15,column_16,column_17,column_18 ,SDEN1001107GR,Dense 7.3N 100mm,Days,0,,Blank,,,,,,,,,,,,
解决方法
问题根源在于write函数默认会为CSV输出添加表头,即使之前在其他DataWeave脚本中设置过header=false,调用write时仍需明确传入该参数。
修改attachments中的contentBytes字段,在write方法中添加header: false的配置:
修改后的DataWeave代码
%dw 2.0 import * from dw::core::Binaries output application/json --- { "message": { "subject": "Summary-" ++ now() as String { "format": "yyyyMMdd" }, "body": { "contentType": "Text", "content": "Please find attached summary" }, "toRecipients": [{ "emailAddress": { "address": p('outlook.toRecipients') } }], "attachments": [{ "@odata.type": "#microsoft.graph.fileAttachment", "name": "service-data.csv", "contentType": "application/csv", "contentBytes": toBase64(write(payload, "application/csv", {header: false})) }] }, "saveToSentItems": "true" }
修改后,生成的CSV内容不会被Outlook 365连接器自动添加表头,接收方收到的附件与本地验证结果一致。
内容的提问来源于stack exchange,提问作者Sambit Swain
相关产品推荐
相关产品推荐

