記事詳細
- 投稿日
- 2025年11月27日07時46分
-
タイトル
-
ユーザー登録 → 確認メール送信 → メール内リンククリック後のアカウント有効化(2)
- 内容
-
ここでは ASP.NET Core MVC(Visual Studio 2022 Community 17.14.21)で、
「ユーザー登録 → 確認メール送信 → メール内リンククリック後のアカウント有効化」
までを行う 完全なサンプル構成 を、実装の流れと主要コード例でまとめます。※実際のプロジェクトでは、SMTP設定やセキュリティキーは環境変数やSecret Managerで安全に管理してください。
1. プロジェクト作成
- Visual Studio 2022 → 新しいプロジェクトの作成
- 「ASP.NET Core Web アプリ (Model-View-Controller)」を選択
- .NET 8(または 7)を選択
- 「個別のユーザーアカウント」を認証に設定
2. 必要なパッケージ
既に Identity が含まれていますが、メール送信用に以下を追加します。
dotnet add package MailKit3.
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.csusing 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, stusing 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