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

如何在ASP.NET Core MVC 2应用中实现Amazon SES邮件发送功能?

在ASP.NET Core MVC 2中实现Amazon SES邮件发送(对应原MVC5方案)

嘿,我刚好做过类似的迁移,给你一步步梳理怎么在ASP.NET Core MVC 2里实现和你原来MVC5项目一致的Amazon SES邮件发送功能:

1. 安装必要的NuGet包

ASP.NET Core里使用AWS SDK需要专门的Core扩展包,你可以通过Package Manager Console或者.NET CLI安装:

  • Package Manager:
    Install-Package AWSSDK.SimpleEmail
    Install-Package AWSSDK.Extensions.NETCore.Setup
    
  • .NET CLI:
    dotnet add package AWSSDK.SimpleEmail
    dotnet add package AWSSDK.Extensions.NETCore.Setup
    

2. 迁移配置参数(替代原web.config)

ASP.NET Core不再用web.config,而是用appsettings.json来管理配置。把你原来web.config里的三个AWS参数放到这个文件里,注意格式:

{
  "AWS": {
    "Profile": "myprofile",
    "ProfilesLocation": "C:\\AWS\\mycredentials\\creds.txt",
    "Region": "eu-west-1"
  }
}

提示:路径里的反斜杠要双写转义,或者直接用正斜杠(C:/AWS/mycredentials/creds.txt)也可以。

3. 在Startup中配置依赖注入

打开Startup.cs,在ConfigureServices方法里添加SES客户端的DI注册,这样后续可以直接注入使用:

using Amazon.SimpleEmail;
using AWSSDK.Extensions.NETCore.Setup;

public void ConfigureServices(IServiceCollection services)
{
    // 其他MVC服务配置...
    services.AddMvc();

    // 注册SES客户端,自动读取appsettings.json里的AWS配置
    services.AddAWSService<IAmazonSimpleEmailService>();
}

4. 编写邮件发送业务服务

和你原来的业务服务逻辑类似,创建一个邮件发送类(比如SesEmailSender),注入IAmazonSimpleEmailService来实现发送逻辑:

using Amazon.SimpleEmail;
using Amazon.SimpleEmail.Model;
using System.Collections.Generic;
using System.Threading.Tasks;

public class SesEmailSender
{
    private readonly IAmazonSimpleEmailService _sesClient;

    // 通过DI注入SES客户端
    public SesEmailSender(IAmazonSimpleEmailService sesClient)
    {
        _sesClient = sesClient;
    }

    public async Task SendEmailAsync(string fromAddress, string toAddress, string subject, string htmlBody)
    {
        var sendRequest = new SendEmailRequest
        {
            Source = fromAddress,
            Destination = new Destination { ToAddresses = new List<string> { toAddress } },
            Message = new Message
            {
                Subject = new Content(subject),
                Body = new Body { Html = new Content(htmlBody) }
            }
        };

        await _sesClient.SendEmailAsync(sendRequest);
    }
}

别忘了把这个服务也注册到DI里,在Startup.cs的ConfigureServices中添加:

services.AddScoped<SesEmailSender>();

5. 在Controller中使用邮件服务

现在你可以在任意Controller里注入SesEmailSender,调用发送方法,和你原来MVC5项目的用法类似:

public class HomeController : Controller
{
    private readonly SesEmailSender _emailSender;

    public HomeController(SesEmailSender emailSender)
    {
        _emailSender = emailSender;
    }

    public async Task<IActionResult> SendTestEmail()
    {
        await _emailSender.SendEmailAsync(
            "your-sender@domain.com",
            "recipient@domain.com",
            "Test Email from ASP.NET Core",
            "<h1>Hello from SES!</h1>"
        );
        return View();
    }
}

注意事项

  • 确保你的creds.txt文件里的AWS凭证拥有ses:SendEmail或者ses:SendTemplatedEmail的权限
  • 如果部署到服务器,要确认ProfilesLocation的路径在服务器上存在且应用程序有权限访问
  • 如果你不想用本地凭证文件,也可以改用环境变量、IAM角色(比如EC2/EKS实例角色)或者AWS Secrets Manager来管理凭证,这在生产环境更安全

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:52:24