-4

이 튜토리얼을 사용하여 사용자에게 전자 메일 확인을 등록하려고하지만 emailservice 클래스를 찾을 수 없습니다.EmailService 클래스를 찾을 수 없음

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

내가 아이덴티티 2.2 MVC (5)를 사용하고 있습니다.

+0

바로 그 페이지에는'EmailService' 구현이 있습니다. 그걸 써. – trailmax

답변

0

지금까지 내가 아는 한, 일반적으로 EmailService 당신은 이메일을 보낼 SmtpClient 클래스를 사용하는 등 이러한 .NET 클래스가 없습니다 :

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); 
+0

추가 사항 : [IIdentityMessageService] (https://msdn.microsoft.com/en-us/library/microsoft.aspnet.identity.iidentitymessageservice (v = vs.108) .aspx) 인터페이스를 구현하고 ** SendAsync ** 메소드에 @pquest하십시오. 수업을 등록하면 이메일을 보낼 수 있습니다. –

0

감사하지만 난 이미 내가 만든

해결책을 찾기 클래스 emailservice하고

userManager.EmailServ처럼 usermanager에서 이메일을 선정 ice = 새 EmailService();

0

나는 동일한 질문을 가지고 다음과 같은 해결책을 사용했습니다. 첫째, 프로젝트라는 서비스에서 새 폴더를 생성하고 튜토리얼에서 다음 코드를 사용하여 새로운 클래스를 만들 : 다음

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("[email protected]", "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); 
      } 
     } 
    } 
} 

, 나는에 내 컨트롤러에서 UserManager 개체의 EmailService 속성을 설정 한 일 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); 

를 호출 할 때 위의 EmailService 클래스에 구성된대로 SendGrid를 사용하여 전자 메일을 보냅니다.

관련 문제