Не могу найти класс EmailService

Я использую это руководство для регистрации пользователя с подтверждением по электронной почте, но не могу найти emailservice учебный класс.

http://www.asp.net/mvc/overview/security/create-an-aspnet-mvc-5-web-app-with-email-confirmation-and-password-reset

Я использую 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 выше.

Другие вопросы по тегам