首先,在开始使用Asp.net Core邮件发送器之前,您需要在Startup.cs文件的ConfigureServices方法中进行配置。在这里,您应该注册IEmailSender服务,并指定实现此服务的类。例如:
using Microsoft.Extensions.DependencyInjection;
using Microsoft.AspNetCore.Identity.UI.Services;
using MyNamespace.Services; // The namespace where your EmailSender resides
...
public void ConfigureServices(IServiceCollection services)
{
...
services.AddTransient();
}
您需要创建一个名为EmailSender的类,并从IEmailSender接口派生它。这个新类应该覆盖SendEmailAsync方法,并使用您选择的电子邮件传输方式(例如SMTP)发送电子邮件。以下是一个示例:
using System.Threading.Tasks;
using Microsoft.AspNetCore.Identity.UI.Services;
namespace MyNamespace.Services
{
public class EmailSender : IEmailSender
{
public Task SendEmailAsync(string email, string subject, string message)
{
// TODO: Use your chosen email transport method (e.g. SMTP) to send the email
return Task.CompletedTask;
}
}
}
在你的Registration页面上,你应该注入IEmailSender服务,然后调用SendEmailAsync方法发送电子邮件。以下是一个示例Registration页面的代码:
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Identity.UI.Services;
using System.Threading.Tasks;
using MyNamespace.ViewModels;
namespace MyNamespace.Controllers
{
public class AccountController : Controller
{
private readonly UserManager _userManager;
private readonly SignInManager _signInManager;
private readonly IEmailSender _emailSender;
public AccountController(
UserManager userManager,
SignInManager signInManager,
IEmailSender emailSender)
{
_userManager = userManager;
_signInManager = signInManager;
_emailSender = emailSender;
}
[HttpGet]
public IActionResult Register()
{
return View();
}
[HttpPost]
public async Task Register(RegisterViewModel model)
{
if (ModelState.IsValid)
{
var user = new ApplicationUser { UserName =