-4

我正在使用本教程通过电子邮件确认注册用户,但我找不到emailservice课程。

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

我正在使用带有 Identity 2.2 的 MVC 5。

4

3 回答 3

1

谢谢,但我已经找到了解决方案

我已经创建了类 emailservice 和他们

从用户管理器中选择电子邮件,像这样

userManager.EmailService = new EmailService();

于 2015-01-29T18:53:44.407 回答
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);
于 2015-01-28T17:42:51.333 回答
0

我有同样的问题,并使用了以下解决方案。首先,在您的项目中创建一个名为 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);
            }
        }
    }
}

然后,我所做的是将控制器中 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 帐户发送电子邮件。

于 2015-03-23T21:18:50.597 回答