ebrahim khodadadi
ebrahim khodadadi
خواندن ۱ دقیقه·۲ سال پیش

ارسال email حاوی صفحه وب (Razor page) در Asp.net core Web Api

مقدمه: برای این که ایمیل حاوی صفحه html & css به صورت Razor page رو رندر کنید و ارسال کنید روشی که قبلا بود صفحه وب رو خط به خط میخوندن مثل کد زیر

https://github.com/ebrahimkhodadadi/gitsharp/blob/main/C#/Htmltostring.cs

و بعد پارامتر ها رو با روخوانی string جایگزین میکردن یا روش دیگه این که صفحه رو رندر میکردن و تبدیل به string میکردن برای ایمیل که مستلزم این بود که razor رو پیاده سازی کرده باشید مثل کد زیر

https://github.com/ebrahimkhodadadi/gitsharp/blob/main/Asp.netcore/Convert(Render)HtmlPageToText(foremail).txt

ولی برای هر پروژه ی .net core ای مثل web api که razor پیاده سازی نمیشه میتونید از کتابخونه متن باز FluentEmail استفاده کنید و string ریزور یا مسیر صفحه رو بهش میدید رندر رو انجام میده با ViewModel ای که بهش دادید و ایمیل رو هم ارسال میکنه پیاده سازی خودم به این شکل بوده


  • پکیج هایی که باید نصب کنید
<PackageReference Include=&quotFluentEmail.Razor&quot Version=&quot3.0.2&quot />
<PackageReference Include=&quotFluentEmail.Smtp&quot Version=&quot3.0.2&quot />


- مدل ها رو پیاده کنید

">

- سرویس رو پیاده کنید

">
">
services.AddNotificaitons(Configuration);
  • داخل appsetting هم که اطلاعات smtp رو وارد کنید
&quotEmailSenderOptions&quot: { &quotSmtpUser&quot: { &quotEmail&quot: &quotnoreply@gmail.com&quot }, &quotSmtpPassword&quot: &quot123456&quot, &quotSmtpHost&quot: &quotmail.gmail.com&quot, &quotSmtpPort&quot: 56, &quotSmtpSsl&quot: false }

مرحله اخر هم razor page رو ایجاد کنید اگر نخواستید داخل wwwroot قرار بدید که طبق مستندات عمل کنید

ولی من به این شکل عمل کردم

نکته: مسیر این فولدر رو در کلاس FluentEmailSender تعریف کردیم

این جا براتون یک صفحه sample ریزور گزاشتم
https://gist.github.com/ebrahimkhodadadi/b04bbac946407a73599b86658f915c6d

نکته: در صفحات وب ایمیل باید از css 2 استفاده کنید و css 3 ساپورت نمیشه لینک اطلاعات بیشتر:

https://www.cerberusemail.com

منابع:

https://github.com/lukencode/FluentEmail

https://lukelowrey.com/dotnet-email-guide-2021

email
شاید از این پست‌ها خوشتان بیاید