مقدمه: برای این که ایمیل حاوی صفحه html & css به صورت Razor page رو رندر کنید و ارسال کنید روشی که قبلا بود صفحه وب رو خط به خط میخوندن مثل کد زیر
https://github.com/ebrahimkhodadadi/gitsharp/blob/main/C#/Htmltostring.cs
و بعد پارامتر ها رو با روخوانی string جایگزین میکردن یا روش دیگه این که صفحه رو رندر میکردن و تبدیل به string میکردن برای ایمیل که مستلزم این بود که razor رو پیاده سازی کرده باشید مثل کد زیر
ولی برای هر پروژه ی .net core ای مثل web api که razor پیاده سازی نمیشه میتونید از کتابخونه متن باز FluentEmail استفاده کنید و string ریزور یا مسیر صفحه رو بهش میدید رندر رو انجام میده با ViewModel ای که بهش دادید و ایمیل رو هم ارسال میکنه پیاده سازی خودم به این شکل بوده
<PackageReference Include="FluentEmail.Razor" Version="3.0.2" />
<PackageReference Include="FluentEmail.Smtp" Version="3.0.2" />
services.AddNotificaitons(Configuration);
"EmailSenderOptions": { "SmtpUser": { "Email": "noreply@gmail.com" }, "SmtpPassword": "123456", "SmtpHost": "mail.gmail.com", "SmtpPort": 56, "SmtpSsl": false }
مرحله اخر هم razor page رو ایجاد کنید اگر نخواستید داخل wwwroot قرار بدید که طبق مستندات عمل کنید
ولی من به این شکل عمل کردم
نکته: مسیر این فولدر رو در کلاس FluentEmailSender تعریف کردیم
این جا براتون یک صفحه sample ریزور گزاشتم
https://gist.github.com/ebrahimkhodadadi/b04bbac946407a73599b86658f915c6d
نکته: در صفحات وب ایمیل باید از css 2 استفاده کنید و css 3 ساپورت نمیشه لینک اطلاعات بیشتر:
منابع: