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

ASP.NET Core使用Mailgun发邮件报RestClient无BaseUrl错误

错误原因

该报错由RestSharp版本不兼容导致:

  • Mailgun官方文档提供的C#示例基于RestSharp v106及更早版本编写,旧版本RestClient开放了可直接赋值的BaseUrl属性,示例代码的写法在旧版本中可正常运行。
  • RestSharp从v107版本开始做了全量API重构,移除了实例上可写的BaseUrl属性,将基础地址配置逻辑迁移到了构造函数阶段,直接照搬旧示例给BaseUrl属性赋值就会触发该编译错误。
解决方法

你可以根据自己的项目需求二选一:

方案1:零代码改动适配官方示例

直接将项目中安装的RestSharp NuGet包降级到v106系列最终稳定版即可:

  • 在NuGet包管理器中找到RestSharp,选择版本106.15.0安装
  • 重新生成项目,报错会直接消失,原有照搬文档的代码不需要做任何调整。

方案2:适配新版RestSharp(推荐长期维护场景使用)

如果不想降级依赖,可按照v107+版本的API规范改写邮件发送逻辑,ASP.NET Core中参考实现如下:

using RestSharp;
using RestSharp.Authenticators;

// 初始化客户端时直接传入基础地址,无需单独设置BaseUrl
var client = new RestClient("https://api.mailgun.net/v3")
{
    Authenticator = new HttpBasicAuthenticator("api", "替换为你自己的Mailgun API Key")
};

// 构造邮件发送请求
var request = new RestRequest("/替换为你的Mailgun绑定域名/messages", Method.Post);
request.AddParameter("from", "发件人显示名 <发件人邮箱地址>");
request.AddParameter("to", "收件人邮箱地址");
request.AddParameter("subject", "邮件主题");
// 发送纯文本邮件用text参数,发送HTML邮件替换为html参数即可
request.AddParameter("text", "纯文本邮件正文内容");
// request.AddParameter("html", "<p>HTML格式邮件正文内容</p>");

// 执行发送请求
var response = await client.ExecutePostAsync(request);
if (response.IsSuccessful)
{
    // 此处编写发送成功后的业务逻辑
}
else
{
    // 此处编写异常处理逻辑,可通过response.ErrorMessage、response.Content排查具体错误
}

注意:v107+版本的RestClient被设计为线程安全的单例类型,在ASP.NET Core项目中建议通过依赖注入注册为单例使用,不要每次发送邮件都新建实例,可大幅提升性能、避免端口浪费。


内容的提问来源于stack exchange,提问作者Rohini Patil

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 09:36:25