如何用Infobip Email API+RestSharp发带附件邮件?C#替代MultipartFile方案
解决Infobip Email API附件上传错误(C# RestSharp实现)
错误原因
你收到的错误是因为请求中把附件参数传递成了字符串类型,而Infobip API期望的是多部分表单格式的文件列表(对应Java的MultipartFile集合),无法将字符串转换为所需的文件对象。
C#中对应的替代类
在RestSharp里,使用FileParameter类来替代Java的MultipartFile,它专门用于封装文件上传的元数据(二进制内容、文件名、MIME类型等),适配multipart/form-data格式的文件上传请求。
正确的代码实现示例
using RestSharp; using System.IO; // 初始化RestClient var infobipClient = new RestClient("https://api.infobip.com/email/1/send"); // 设置请求头(添加你的API密钥等认证信息) infobipClient.AddDefaultHeader("Authorization", "App YOUR_API_KEY"); infobipClient.AddDefaultHeader("Content-Type", "multipart/form-data"); var sendRequest = new RestRequest(Method.POST); // 添加邮件核心参数 // 注:如果API不支持批量收件人,需循环遍历收件人列表逐个发送 sendRequest.AddParameter("to", "recipient1@domain.com"); sendRequest.AddParameter("from", "your-sender@domain.com"); sendRequest.AddParameter("subject", "带附件的测试邮件"); sendRequest.AddParameter("text", "这是一封包含附件的测试邮件"); // 构建并添加附件 // 读取文件字节 byte[] fileContent = File.ReadAllBytes(@"C:\path\to\your\document.pdf"); // 创建FileParameter实例,第一个参数对应API的"attachment"字段名 var attachment = FileParameter.Create( name: "attachment", data: fileContent, fileName: "document.pdf", contentType: "application/pdf" ); // 将附件添加到请求中 sendRequest.AddFile(attachment); // 发送请求并处理响应 var response = infobipClient.Execute(sendRequest);
关键注意事项
- 当添加多个附件时,只需重复创建
FileParameter并调用AddFile即可,RestSharp会自动处理多文件的表单格式。 - 针对多收件人问题:如果Infobip API本身不支持批量收件人参数,需遍历收件人列表,为每个收件人单独发起请求;部分API允许用逗号分隔多个收件人地址,可先测试该方式是否可行。
- 确保认证信息(如API密钥)正确添加到请求头,避免权限错误。
内容的提问来源于stack exchange,提问作者Matija Sestak
相关产品推荐
相关产品推荐

