当前位置: 首页 > 知识库问答 >
问题:

ASP.NET标识框架-重新发送确认电子邮件

韩峰
2023-03-14

我正在设置身份框架(2?)用于我的ASP.NET站点。我有确认电子邮件工作,但我不知道在哪里或如何允许用户请求重新发送确认电子邮件。

我在这里找到了这个部分‘重新发送电子邮件确认链接',但那是为MVC写的(我根本不知道很多)。

string callbackUrl = IdentityHelper.GetUserConfirmationRedirectUrl(code, user.Id, Request);

manager.SendEmail(user.Id, "Confirm your account", "Please confirm your account by clicking <a href=\"" + callbackUrl + "\">here</a>.");

signInManager.SignIn(user, isPersistent: false, rememberBrowser: false);

共有1个答案

徐文彬
2023-03-14

嗯,结果并不是很痛苦。我省略了在用户的电话号码字段中存储他们最后一个请求的日期时间的难看的部分。:)我还没有学会如何在aspNetUsers表中添加自定义字段。有了日期时间,我可以限制他们要求重新发送的频率...以防他们试图发送别人的电子邮件。

    private ApplicationUser _currentUser;
    private ApplicationUserManager _manager;

    protected ApplicationUserManager Manager
    {
        get { return _manager ?? (_manager = Context.GetOwinContext().GetUserManager<ApplicationUserManager>()); }
    }

    protected ApplicationUser CurrentUser
    {
        get { return _currentUser ?? (_currentUser = Manager.FindById(User.Identity.GetUserId())); }
    }

    protected void Page_Load(object sender, EventArgs e)
    {
        if (CurrentUser == null || !User.Identity.IsAuthenticated)
        {
            Response.Redirect("~/account/register.aspx");
        }
        else if (User.Identity.IsAuthenticated && CurrentUser.EmailConfirmed)
        {
            alreadyConfirmed.Visible = true;
        }
        else if (!minTimeElapsedSinceLastRequest())
        {
            NotEnoughTimeLiteral.Text = "A resend occurred on " + CurrentUser.PhoneNumber + ". Please wait longer before your next request";
            notEnoughTimeFlag.Visible = true;
        }
        else
        {
            idResendButton.Enabled = true;
        }
    }

    protected void ResendConfirmationEmailClick(object sender, EventArgs e)
    {
        string currentUserId = User.Identity.GetUserId();

        // For more information on how to enable account confirmation and password reset please visit http://go.microsoft.com/fwlink/?LinkID=320771
        string code = Manager.GenerateEmailConfirmationToken(currentUserId);
        string callbackUrl = IdentityHelper.GetUserConfirmationRedirectUrl(code, currentUserId, Request);

        Manager.SendEmail(currentUserId, "Confirm your account", "Please confirm your account by clicking <a href=\"" + callbackUrl + "\">here</a>.");
        setUsersLastResendDateTime(CurrentUser);
        IdentityHelper.RedirectToReturnUrl(Request.QueryString["ReturnUrl"], Response);
    }
 类似资料:
  • 问题内容: 启动电子邮件意图后,如何获得确认已发送电子邮件或发生错误的回叫活动? 也许开始activityForResult?但是我应该期待什么结果呢? 问题答案: 这确实取决于您的所启动的应用程序。它可以是Gmail应用程序,可以是电子邮件应用程序,也可以是任何第三方应用程序。因此,没有100%可靠的方法来确定用户是否实际按下了。 您唯一可以做的就是检查Gmail和电子邮件应用程序在通过调用时是

  • 我在我的木业商店里遇到了一个很奇怪的问题。有几天“Customer_Processing_Order”电子邮件不再发送给客户。即使我在订单详细信息中触发手动发送此电子邮件,也没有发生任何事情。 在一般电子邮件中,发送与SMTP数据一起工作。当我将状态设置为“已完成”时,电子邮件将被发送。只有订单确认不起作用。 电子邮件被激活,我也检查了错误日志。我还安装了订单电子邮件的预览插件。当我想生成预览时,

  • 问题内容: 在Swift 的正常情况下,我使用此代码发送邮件。 如何在SwiftUI中实现相同目标? 我需要使用吗? 问题答案: 如前所述,您需要将组件移植到via 。 这是一个简单的实现: 用法 : (在运行iOS 13的iPhone 7 Plus上进行了测试-就像一个护身符) 为Xcode 11.4更新

  • 主要内容:SmtpClient类,示例VB.Net应用程序可发送电子邮件。名称空间包含用于向简单邮件传输协议(SMTP)服务器发送电子邮件以供传送的类。 下表列出了一些常用的类: 编号 类 描述 1 代表电子邮件的附件。 2 将附件存储为电子邮件的一部分。 3 代表电子邮件发件人或收件人的地址。 4 存储与电子邮件关联的电子邮件地址。 5 表示可以使用类发送的电子邮件。 6 允许应用程序使用简单邮件传输协议(SMTP)发送电子邮件。

  • 主要内容:使用 CDOSYS 发送电子邮件,CDONTs 怎么样?,使用 CDOSYS 的实例CDOSYS 是 ASP 中的内建组件。此组件用于通过 ASP 发送电子邮件。 使用 CDOSYS 发送电子邮件 CDO (Collaboration Data Objects) 是一项微软的技术,设计目的是用来简化通讯应用程序的创建。 CDOSYS 是 ASP 中的内建组件。我们将向您演示如何通过 ASP 使用该组件来发送电子邮件。 CDONTs 怎么样? 微软已经在 Windows 2000、