من میخوام وقتی یه کاربر ثبت نام کنه یک ایمیل به حساب جیمیل اش بره توسط asp.net core ولی نتونستم یه که این کارو کنم. من خیلی ویدیو های یوتیوب را هم دیدم ولی از رویش های آنها هم کار نداد. میشه یک روش خوب و جامع را برام بدین و یا اگر ویدیوی در این باره دارین برام پیشنهاد کنین. من استک اورفلو را هم خیلی سرچ کردم ولی از کدهاش سر در نیاوردم
سوال در مورد نحوه ارسال ایمیل در Asp.net Core قبلا پرسیده شده و پاسخ هم داده شده.
اما مجدد یک بار دیگه براتون توضیح میدم و سورس تست شده هم براتون قرار میدم. یک پروژه از نوع Asp.net Core ایجاد کنید. روی نام پروژه کلیک راست کنید و یک پوشه به نام Service ایجاد کنید. داخل پوشه Service یک کلاس به نام EmailService و یک اینترفیس به نام IEmailService ایجاد کنید. کدهای زیر را داخل کلاس EmailService و اینترفیس IEmailService کپی کنید.
کلاس EmailService
public class EmailService : IEmailService
{
public async Task SendEmailAsync(string email, string subject, string message)
{
using (var Client = new SmtpClient())
{
var Credential = new NetworkCredential
{
//UserName Example : If your email is test@gmail.com yourUserName is test
UserName = "YourUserName",
Password = "YourEmailPassword"
};
Client.Credentials = Credential;
Client.Host = "smtp.gmail.com";
Client.Port = 587; // or 25 -- 587 -- 465 For Send Email
Client.EnableSsl = true;
using (var emailMessage = new MailMessage())
{
emailMessage.To.Add(new MailAddress(email));
emailMessage.From = new MailAddress("YourEmail@gmail.com", "DisplayEmailName");
emailMessage.Subject = subject;
emailMessage.IsBodyHtml = true; //contains html tag
emailMessage.Body = message;
Client.Send(emailMessage);
};
await Task.CompletedTask;
}
/////////////////////////////////////////////////////////////////
}
}
دقت کنید که مقدار UserName در کدهای بالا همان بخش اول ایمیل شما می باشد. به عنوان مثال اگر ایمیل شما Test@gmail.com می باشد UserName شما Test می باشد. سایر مقادیر هم مطابق اطلاعات ایمیل خود تکمیل کنید.
اینترفیس IEmailService
public interface IEmailService
{
Task SendEmailAsync(string email, string subject, string message);
}
خب همانطور که می دانید یک کلاس و یک اینترفیس تشکیل یک Service می دهد. بنابراین باید این سرویس در کلاس Startup.cs راه اندازی شود. پس در متد ConfigureService از کلاس Startup.cs کدهای زیر را بنویسید. (اگر معنی و مفهوم سرویس را به خوبی نمیدانید این لینک را مطالعه کنید.)
کلاس Startup.cs
public void ConfigureServices(IServiceCollection services)
{
//Email
services.AddScoped<IEmailService, EmailService>();
services.AddControllersWithViews();
}
خب حالا سرویس ایمیل شما آماده می باشد و کافیست در کنترلر از آن استفاده کنید.
در حال حاضر Solution شما باید به این شکل باشد:
کنترلر Home
public class HomeController : Controller
{
private readonly IEmailService _emailService;
public HomeController(IEmailService emailService)
{
_emailService = emailService;
}
public async Task<IActionResult> SendEmail(string emails, string subject, string message)
{
if (emails != null)
{
await _emailService.SendEmailAsync(emails, subject, message);
}
return RedirectToAction("Index");
}
public async Task<IActionResult> Index()
{
await SendEmail("emailToSend@yahoo.com", "Test", "Salam Salam");
return View();
}
}
اگر پروژه را اجرا کنید به محض ران شدن اکشن Index در کنترلر Home یک ایمیل به emailToSend@yahoo.com با موضوع Test و متن Salam Salam ارسال خواهد شد.
با توجه به خطایی که شما در بخش نظرات برای پاسخ قبلی مطرح کردید خطای شما، خطای زیر هست :
SmtpException: The SMTP server requires a secure connection or the client was not authenticated. The server response was: 5.7.0 Authentication Required
این خطا مربوط به کدنویسی نیست و کدهای شما صحیح هست. این خطا دلایلی مثل اشتباه بودن رمز عبور، سطح امنیتی بالای ایمیل شما و ... داره که میتونید توی این لینک راه حل ها رو مطالعه کنید.
تاریخ :
1403/08/29
- ساعت :
07:15:00 PM
- بازدید :
79
- پاسخ :
0
|
تاریخ :
1403/08/18
- ساعت :
10:40:00 AM
- بازدید :
112
- پاسخ :
0
|
تاریخ :
1402/07/23
- ساعت :
04:01:00 PM
- بازدید :
1034
- پاسخ :
1
|
تاریخ :
1403/05/30
- ساعت :
09:22:00 AM
- بازدید :
430
- پاسخ :
1
|
تاریخ :
1402/08/16
- ساعت :
10:38:00 AM
- بازدید :
1356
- پاسخ :
1
|
تاریخ :
1398/08/17
- ساعت :
01:27:00 AM
- بازدید :
4800
- پاسخ :
1
|
تاریخ :
1403/07/27
- ساعت :
03:21:00 PM
- بازدید :
216
- پاسخ :
1
|
تاریخ :
1403/07/26
- ساعت :
09:00:00 PM
- بازدید :
117
- پاسخ :
0
|
تاریخ :
1403/05/16
- ساعت :
09:57:00 AM
- بازدید :
397
- پاسخ :
2
|
تاریخ :
1403/06/25
- ساعت :
11:39:00 PM
- بازدید :
568
- پاسخ :
1
|
تاریخ :
1401/02/24
- ساعت :
02:17:00 PM
- بازدید :
2013
- پاسخ :
1
|
تاریخ :
1403/08/29
- ساعت :
07:15:00 PM
- بازدید :
79
- پاسخ :
0
|
تاریخ :
1403/08/18
- ساعت :
10:40:00 AM
- بازدید :
112
- پاسخ :
0
|
تاریخ :
1402/07/23
- ساعت :
04:01:00 PM
- بازدید :
1034
- پاسخ :
1
|
تاریخ :
1403/05/30
- ساعت :
09:22:00 AM
- بازدید :
430
- پاسخ :
1
|
تاریخ :
1402/08/01
- ساعت :
06:25:00 PM
- بازدید :
931
- پاسخ :
1
|
تاریخ :
1402/08/16
- ساعت :
10:38:00 AM
- بازدید :
1356
- پاسخ :
1
|
تاریخ :
1398/08/17
- ساعت :
01:27:00 AM
- بازدید :
4800
- پاسخ :
1
|
تاریخ :
1402/09/08
- ساعت :
07:34:00 PM
- بازدید :
1161
- پاسخ :
1
|
تاریخ :
1402/09/21
- ساعت :
11:10:00 PM
- بازدید :
599
- پاسخ :
1
|