خالی بودن body در ارسال ایمیل در Asp.net core
در تابع زیر درست یوزر اضافه می شود و پیغام ها هم میرود. اما با توجه به انجام تنظیمات جیمیل body خالی بر میگردد. در حالیکه ایمیل ارسال هم میشود ولی بدنه آن خالی است.
حتی فعالسازی اکانت هم جدا بررسی میکنم درست کار میکند ولی لینک فعال سازی به ایمیل یوزر خالی ارسال میشود
کنترلر:
[Route("Register")]
public async Task<IActionResult> Register(RegisterUserViewModel registerUserViewModel)
{
if (ModelState.IsValid)
{
var result = await _userService.RegisterUser(registerUserViewModel);
TempData[SuccessMessage] = "کاربر گرامی،ثبت نام شما با موفقیت انجام شد.";
var user = await _userService.GetUserByEmail(registerUserViewModel.Email);
var activeCode = user.EmailActiveCode;
ViewBag.active = activeCode;
return View("SuccessRegister", registerUserViewModel);
}
return View();
}
و این هم در سرویس که یوزر به درستی هم در دیتابیس اد میشود . صفحه آخر هم که suceesRegister هم میاید در تایید انجام ثبت کاربر . ایمیل هم ارسال میشود
فقط ایمیل خالی ارسال می شود:
public async Task<RegisterUserResult> RegisterUser(RegisterUserViewModel registerUserViewModel)
{
...
string body = _viewRender.RenderToStringAsync("ActiveEmail", user);
SendEmail.Send(user.Email, "فعالسازی", body);
return RegisterUserResult.Success;
}
و این هم صفحه ActiveEmail
@model AryanITC.Domain.ViewModels.Account.RegisterUserViewModel
<div style="direction: rtl; padding: 20px">
<h2>@Model.FirstName عزیز !</h2>
<p>با تشکر از ثبت نام شما در، جهت ادامه کار میبایست حساب کاربری خود را فعال کنید</p>
<p>
<a href="https://localhost:44385/active?EmailActiveCode=@ViewBag.active">فعالسازی حساب کاربری</a> </p>
</div>
پاسخ هوش مصنوعی
به نظر می رسد مشکل در ساخت بدنه ایمیل شما باشد. در کدی که ارایه کردید، به نظر می رسد که متد RenderToStringAsync به درستی کار نمی کند و بدنه ایمیل خالی برمی گردد. برای بررسی این موضوع، پیشنهاد می شود موارد زیر را بررسی کنید:
-
اطمینان حاصل کنید که نام ویو ("ActiveEmail") که به متد
RenderToStringAsyncارسال می شود، درست است و این ویو به درستی در پوشه مربوطه موجود است. -
بررسی کنید که داده های
userبه درستی برای متدRenderToStringAsyncارسال می شوند و تمام اطلاعات مورد نیاز برای تولید بدنه ایمیل موجود است. -
بررسی کنید که آیا متد
RenderToStringAsyncدر حال حاضر باعث ایجاد استثنا یا خطایی نمی شود. -
به عنوان یک روش دیباگ، می توانید محتوای
bodyرا قبل از ارسال ایمیل با استفاده از خط زیر چاپ کنید:Console.WriteLine(body);
اگر بعد از چک کردن موارد بالا همچنان با مشکل روبرو هستید، می توانید کد RenderToStringAsync را به طور جداگانه تست کنید تا از کارکرد صحیح آن مطمین شوید. همچنین مطمین شوید که موتور رندرینگ (View Engine) به درستی پیکربندی شده است.
اگر سوال دیگری دارید یا نیاز به توضیحات بیشتر دارید، خوشحال می شوم کمک کنم.
اگر قصد دارید عملیات "فعالسازی اکانت کاربران با استفاده از ایمیل" رو انجام بدید می تونید از لینک زیر استفاده کنید:
فعالسازی اکانت کاربران با استفاده از لینک فعالسازی در Asp.net Core
در لینک زیر آموزش ارسال ایمیل با متن دلخواه یا همون body مورد نظر هست.
- آموزش استفاده از پلاگین گردونه شانس در Asp.net core به همراه سورس
- نمایش متن به صورت فرمت شده در CkEditor
- آموزش استفاده از SignalR در Asp.net Core با مثال عملی
- ادغام چند گزارش استیمول سافت بصورت پی دی اف در یک فایل
- نحوه تغییر استایل کامپوننت select2 چگونه است ؟
- چگونه امنیت پروژه را در Asp.net Core افزایش دهیم ؟
- ارسال پارامتر در دستور window.open جی کویری
- ارسال پارامتر از طریق جاوااسکریپت با کلیک روی تگ a
- خطای 500 زمان اجرا شدن پروژه روی هاست
- کویری نویسی در استیمول سافت جهت فیلتر اطلاعات
- کار با CkEditor با قابلیت آپلود عکس
- خطا در ایجاد migration در Asp.net core
- تفاوت های Asp.net core و Asp.net mvc چیه؟
- دلیل اسپم شدن ایمیل های ارسالی از سرور
- نحوه لایه بندی پروژه Core و اضافه کردن به IIS
- ارسال ایمیل در Asp.net core
- آیا میشه در mvc core از کامپونت استفاده کرد
- آپلود فایل در Asp.net core چگونه است؟
- حذف کامل یک رکورد در جدول ریلیشن شده
- اشکال در آپلود فایل ویدیو در mvc core 2