You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET7中用RestSharp+MailGun发附件报mediaType非空异常求助

问题

在.NET 7框架下使用RestSharp库调用MailGun API发送带附件的邮件时,抛出异常:The value cannot be null or empty. (Parameter 'mediaType')。注释掉附件相关代码后,邮件可正常发送。相关代码如下:

var client = new RestClient(new Uri(BaseUrl))
{
    Authenticator = new HttpBasicAuthenticator("api", ApiKey)
};
                    
var request = new RestRequest();
request.AddParameter("domain", domain, ParameterType.UrlSegment);
request.Resource = $"{domain}/messages";
request.AddParameter("from", "noreply@smartbroker.com");
request.AddParameter("to", "ahuja.dinesh85@gmail.com");
request.AddParameter("subject", "test subject");
request.AddParameter("html", "hello");
    
//Attachment
const string fileName = "D:\\ebook.pdf";                
request.AddFile("attachment", fileName);
    
request.Method = Method.Post;
    
var response = await client.ExecuteAsync(request);

解决方案

问题出在调用AddFile方法时未指定媒体类型(MediaType),RestSharp处理文件上传时需要明确文件的MIME类型,否则会触发该空值异常。

你可以通过以下两种方式修复:

  • 手动指定MIME类型
    直接在AddFile方法中传入对应文件的媒体类型,比如PDF文件的MIME类型为application/pdf:

    const string fileName = "D:\\ebook.pdf";                
    request.AddFile("attachment", fileName, "application/pdf");
    
  • 让RestSharp自动推断MIME类型
    使用文件流重载的AddFile方法,通过文件流和文件名让RestSharp自动识别媒体类型:

    const string fileName = "D:\\ebook.pdf";
    using var fileStream = File.OpenRead(fileName);
    request.AddFile("attachment", fileStream, fileName);
    

注:MailGun API要求附件参数名为attachment(多附件可使用attachment[0]、attachment[1]这类格式),你的参数名设置是正确的,核心问题仅为缺失媒体类型。

内容的提问来源于stack exchange,提问作者Dinesh Ahuja

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 06:10:31