Не могу найти класс EmailService
Я использую это руководство для регистрации пользователя с подтверждением по электронной почте, но не могу найти emailservice
учебный класс.
Я использую MVC 5 с идентичностью 2.2.
3 ответа
Спасибо но я уже нашел решение
Я создал класс emailservice и их
Выбрал письмо от usermanager, вот так
userManager.EmailService = new EmailService();
Насколько я знаю, такого класса.net, как EmailService
Обычно вы используете SmtpClient
класс для отправки писем:
SmtpClient client = new SmtpClient("server.address.com");
MailAddress from = new MailAddress(fromAddress, fromName);
MailMessage msg = new MailMessage();
msg.From = from;
foreach(string addr in to)
msg.To.Add(addr);
msg.Body = content;
msg.Subject = subject;
client.Send(msg);
У меня был тот же вопрос, и я использовал следующее решение. Сначала создайте в своем проекте новую папку с именем services и создайте новый класс со следующим кодом из учебника:
namespace YourProject.Services
{
public class EmailService : IIdentityMessageService
{
public async Task SendAsync(IdentityMessage message)
{
await configSendGridasync(message);
}
// Use NuGet to install SendGrid (Basic C# client lib)
private async Task configSendGridasync(IdentityMessage message)
{
var myMessage = new SendGridMessage();
myMessage.AddTo(message.Destination);
myMessage.From = new System.Net.Mail.MailAddress("no-reply@your-domain.com", "Customer Service");
myMessage.Subject = message.Subject;
myMessage.Text = message.Body;
myMessage.Html = message.Body;
var credentials = new NetworkCredential(
ConfigurationManager.AppSettings["SendGridUsername"],
ConfigurationManager.AppSettings["SendGridPassword"]
);
// Create a Web transport for sending email.
var transportWeb = new Web(credentials);
// Send the email.
if (transportWeb != null)
{
await transportWeb.DeliverAsync(myMessage);
}
else
{
Trace.TraceError("Failed to create Web transport.");
await Task.FromResult(0);
}
}
}
}
Затем я установил свойство EmailService объекта UserManager в моем контроллере для нового экземпляра класса EmailService (прокрутите его вправо, чтобы увидеть его, извините за это):
namespace YourProject.Controllers
{
public class UserManagementController : Controller
{
private UserManager<ApplicationUser> UserManager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(new ApplicationDbContext())){EmailService = new Services.EmailService()};
// GET: UserManagement
Затем, когда вы звоните
UserManager.SendEmailAsync(user.Id, subject, body);
Он отправит электронное письмо с использованием вашего аккаунта SendGrid, настроенного в классе EmailService выше.