Mulesoft - 我想发送一封电子邮件,其中附有已发布到我的 API 端点的文件
Mulesoft - I want to send an e-mail with a file attached that was posted to my API endpoint
使用 Mule 4.x,我想让我的 API 设置一个 HTTP POST 方法端点,它允许用户 post 表单数据包含一个文件。
然后我想获取该文件,并将其与 posted 文件一起作为电子邮件附件通过电子邮件发送。
如果可能的话,这应该是文件类型不可知的,因为它可以是 posted 到 API 的任何文件类型。
我似乎无法将表单部分的“内容”转换为适合电子邮件附件的内容。
我经历了许多不同的迭代。我此刻所拥有的..
当我记录有效负载时,我得到:
----------------------------344843990838395406613242
Content-Disposition: form-data; name="fileContents"; filename="upload.txt"
Content-Type: file
[{"message": "Hello World!"}]
----------------------------344843990838395406613242--
看起来不错。
我可以访问文件名并使用以下方法记录它:
#[payload.parts[0].headers.'Content-Disposition'.filename]
但每当我尝试访问:
#[payload.parts[0].内容]
无论是尝试'log'它,还是在“发送电子邮件”组件的“附件”字段中,我都收到以下错误消息:
""Unable to find a sub type in `file, while writing Weave.
Trace: at main (Unknown)" evaluating expression: "payload.parts[0].content"."
另外,我能够通过使用 'Read' 组件将本地文件附加到电子邮件,然后使用 'Set Variable' 将其分配给变量,MIME 类型的“application/binhex”。然后我似乎能够通过更改指向的本地文件将任何文件类型附加到电子邮件。
但我不确定如何将传入的表单部件文件连接到附加文件。
我觉得我一定少了一步。任何 tips/tricks/advice/examples 将不胜感激。我是否需要 'read' 内容流并将其转换成某种东西?
注意:另外,我尝试将 POST 与包含文件的表单数据正文一起使用也没有具体原因。这对我来说似乎最有意义,但如果有更好的发送方式,效果会更好,请务必告诉我。
Edit/Additional 信息:
在此处的视频中 https://www.youtube.com/watch?v=5_YKXE8E7Sw
我注意到他的有效载荷输出正确的内容类型,而不是像我的那样只是“文件”。我注意到的唯一区别是我使用 APIKit 作为进入我的 API 的入口点。他不是。
我只使用标准的 http 侦听器创建了一个测试项目,输出确实包含文件的实际内容类型。
也许这是 APIKit 中的错误?或者我是否需要专门配置一些东西以允许正确输入实际文件类型?
我在 Mulesoft 论坛的某个人的帮助下找到了解决方案。
我不是 post 将我的文件作为表单部分数据,而是对我的文件内容进行 Base64 编码并将其作为 JSON 格式的 http post 正文发送.然后使用此 json 有效负载转换为 e-mail 附件以添加到 E-mail 连接器。
这似乎工作得很好。并且似乎 file-type 不可知论者。
使用 Mule 4.x,我想让我的 API 设置一个 HTTP POST 方法端点,它允许用户 post 表单数据包含一个文件。
然后我想获取该文件,并将其与 posted 文件一起作为电子邮件附件通过电子邮件发送。
如果可能的话,这应该是文件类型不可知的,因为它可以是 posted 到 API 的任何文件类型。
我似乎无法将表单部分的“内容”转换为适合电子邮件附件的内容。
我经历了许多不同的迭代。我此刻所拥有的.. 当我记录有效负载时,我得到:
----------------------------344843990838395406613242
Content-Disposition: form-data; name="fileContents"; filename="upload.txt"
Content-Type: file
[{"message": "Hello World!"}]
----------------------------344843990838395406613242--
看起来不错。 我可以访问文件名并使用以下方法记录它: #[payload.parts[0].headers.'Content-Disposition'.filename]
但每当我尝试访问: #[payload.parts[0].内容]
无论是尝试'log'它,还是在“发送电子邮件”组件的“附件”字段中,我都收到以下错误消息:
""Unable to find a sub type in `file, while writing Weave.
Trace: at main (Unknown)" evaluating expression: "payload.parts[0].content"."
另外,我能够通过使用 'Read' 组件将本地文件附加到电子邮件,然后使用 'Set Variable' 将其分配给变量,MIME 类型的“application/binhex”。然后我似乎能够通过更改指向的本地文件将任何文件类型附加到电子邮件。
但我不确定如何将传入的表单部件文件连接到附加文件。
我觉得我一定少了一步。任何 tips/tricks/advice/examples 将不胜感激。我是否需要 'read' 内容流并将其转换成某种东西?
注意:另外,我尝试将 POST 与包含文件的表单数据正文一起使用也没有具体原因。这对我来说似乎最有意义,但如果有更好的发送方式,效果会更好,请务必告诉我。
Edit/Additional 信息: 在此处的视频中 https://www.youtube.com/watch?v=5_YKXE8E7Sw 我注意到他的有效载荷输出正确的内容类型,而不是像我的那样只是“文件”。我注意到的唯一区别是我使用 APIKit 作为进入我的 API 的入口点。他不是。
我只使用标准的 http 侦听器创建了一个测试项目,输出确实包含文件的实际内容类型。
也许这是 APIKit 中的错误?或者我是否需要专门配置一些东西以允许正确输入实际文件类型?
我在 Mulesoft 论坛的某个人的帮助下找到了解决方案。
我不是 post 将我的文件作为表单部分数据,而是对我的文件内容进行 Base64 编码并将其作为 JSON 格式的 http post 正文发送.然后使用此 json 有效负载转换为 e-mail 附件以添加到 E-mail 连接器。
这似乎工作得很好。并且似乎 file-type 不可知论者。