如何连接MuleSoft与Unix服务器提取文件并通过邮件发送?
实现MuleSoft对接Unix服务器提取文件+邮件发送/共享的操作步骤
1 前置准备
- 确认Unix服务器已开启SFTP/SSH服务,用于对接的服务账号已开通目标文件目录的读权限
- 在Anypoint Studio的Mule项目中预装SFTP Connector、Email Connector,Mule 4.x版本可直接从内置Exchange搜索安装对应适配版本
2 核心配置操作
2.1 对接Unix服务器提取文件
- 新建SFTP全局配置,填写核心参数:
- 主机地址:Unix服务器的内网/公网可访问IP
- 端口:默认
22,有自定义端口可替换为实际值 - 认证方式:优先选择SSH密钥认证,安全等级要求低的场景可使用密码认证
- 基准工作目录:填写Unix服务器上待提取文件的存储路径,例如
/opt/business/reports/
- 拉取文件逻辑配置:先调用SFTP的
List操作遍历目标目录下的所有文件,按需筛选后调用Read操作读取指定文件,文件内容可暂存为二进制流,也可直接写入Mule侧的存储目录
2.2 两种业务需求实现
2.2.1 提取文件直接作为邮件附件发送
- 新建Email全局配置,填写SMTP服务器地址、端口、发件人账号、授权密码,开启TLS加密的场景需同步配置加密参数
- 调用Email的
Send操作,附件栏直接绑定SFTP读取到的文件流,附件名直接复用Unix服务器上的原文件名即可,Mule表达式示例:- 附件内容:
#[payload as Binary] - 附件名:
#[attributes.fileName]
- 附件内容:
- 支持批量添加多个文件作为附件,需提前遍历所有待发送文件组装为附件列表
2.2.2 共享文件存储位置
可根据实际场景二选一:
- 方案1:提取文件后写入Mule侧的共享存储(内网NAS、内部对象存储等),将文件的内网访问路径/下载链接填写到邮件正文发送给收件人
- 方案2:如果Unix服务器的目标目录已配置内部共享权限,直接将文件在Unix服务器上的绝对路径(例如
/opt/business/reports/202406_sale.csv)填写到邮件正文,告知有权限的收件人可直接通过SFTP、挂载目录等方式访问
3 常见问题排查
- SFTP连接失败:先检查Unix服务器防火墙是否放开Mule服务器IP的22端口访问权限,再确认对接账号是否有目标目录的读权限
- 邮件附件发送失败:检查文件大小是否超出邮箱服务商的附件限制,超过阈值的大文件建议走共享路径方式发送
- 文件内容乱码:读取Unix文件时指定和源文件匹配的编码,例如
UTF-8、GBK
内容的提问来源于stack exchange,提问作者Sidh
相关产品推荐
相关产品推荐

