記事詳細


投稿日
2025年11月27日07時46分
タイトル

ユーザー登録 → 確認メール送信 → メール内リンククリック後のアカウント有効化(2)

内容

ここでは ASP.NET Core MVC(Visual Studio 2022 Community 17.14.21)で、
「ユーザー登録 → 確認メール送信 → メール内リンククリック後のアカウント有効化」
までを行う 完全なサンプル構成 を、実装の流れと主要コード例でまとめます。

※実際のプロジェクトでは、SMTP設定やセキュリティキーは環境変数やSecret Managerで安全に管理してください。

1. プロジェクト作成

  1. Visual Studio 2022 → 新しいプロジェクトの作成
  2. 「ASP.NET Core Web アプリ (Model-View-Controller)」を選択
  3. .NET 8(または 7)を選択
  4. 「個別のユーザーアカウント」を認証に設定

2. 必要なパッケージ

既に Identity が含まれていますが、メール送信用に以下を追加します。

dotnet add package MailKit

3. Program.cs 設定

メール送信サービスをDIに登録します。

using Microsoft.AspNetCore.Identity;
using Microsoft.EntityFrameworkCore;
using YourApp.Data;
using YourApp.Services;

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddDbContext<ApplicationDbContext>(options =>
    options.UseSqlServer(builder.Configuration.GetConnectionString("DefaultConnection")));

builder.Services.AddDefaultIdentity<IdentityUser>(options =>
{
    options.SignIn.RequireConfirmedAccount = true;
})
.AddEntityFrameworkStores<ApplicationDbContext>();

builder.Services.AddControllersWithViews();

// メール送信サービス登録
builder.Services.AddTransient<IEmailSender, SmtpEmailSender>();

var app = builder.Build();

if (!app.Environment.IsDevelopment())
{
    app.UseExceptionHandler("/Home/Error");
    app.UseHsts();
}

app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthentication();
app.UseAuthorization();

app.MapControllerRoute(
    name: "default",
    pattern: "{controller=Home}/{action=Index}/{id?}");

app.MapRazorPages();
app.Run();

4. メール送信サービス

Services/SmtpEmailSender.cs

using MailKit.Net.Smtp;
using MimeKit;
using Microsoft.AspNetCore.Identity.UI.Services;

namespace YourApp.Services
{
    public class SmtpEmailSender : IEmailSender
    {
        private readonly IConfiguration _config;
        public SmtpEmailSender(IConfiguration config) => _config = config;

        public async Task SendEmailAsync(string email, st

using MailKit.Net.Smtp;

using MimeKit;

using Microsoft.AspNetCore.Identity.UI.Services;


namespace YourApp.Services

{

    public class SmtpEmailSender : IEmailSender

    {

        private readonly IConfiguration _config;

        public SmtpEmailSender(IConfiguration config) => _config = config;


        public async Task SendEmailAsync(string email, st


Powered by Froala Editor

添付画像

画像はありません
Genreのカテゴリ-名
Others
編集 | 記事一覧