Umbraco ApplicationEventHandler не срабатывает для пользователя

Я пытаюсь отправить электронное письмо администратору, когда в CMS создается новый пользователь. Но когда я создаю нового пользователя во время отладки в VS, первая точка останова в "umbraco.BusinessLogic.User.New += User_New;" никогда не попадает. Я использую Umbraco версии 7.3.4.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web
using Umbraco.Core;
using umbraco.BusinessLogic;

namespace NewUserEmail
{
    /// <summary>
    /// Summary description for NewUserNotification
    /// </summary>
    public class NewUserNotification : ApplicationEventHandler
    {
        public NewUserNotification()
        {
            umbraco.BusinessLogic.User.New += User_New;
        }

    private void User_New(umbraco.BusinessLogic.User sender, EventArgs e)
    {
        System.Net.Mail.MailMessage message = new System.Net.Mail.MailMessage();
        message.To.Add("[email protected]");
        message.Subject = "This is the Subject line";
        message.From = new System.Net.Mail.MailAddress("[email protected]");
        message.Body = "This is the message body";
        System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient("yoursmtphost");
        smtp.Send(message);
    } 
  }
}

person NickWojo531    schedule 19.01.2016    source источник


Ответы (1)


Я думаю, поскольку вы используете ApplicationEventHandler, вы захотите переопределить метод ApplicationStarted вместо того, чтобы использовать свой конструктор.

Способ, который я использовал, требует using Umbraco.Core.Services;.

protected override void ApplicationStarted(UmbracoApplicationBase umbracoApplication, ApplicationContext applicationContext)
{
    //I usually use Members for things like this but if you want user, it'll be UserService.SavedUser +=...
    MemberService.Saved += User_New;   
}

private void User_New(IMemberService sender, EventArgs e)
{
    System.Net.Mail.MailMessage message = new System.Net.Mail.MailMessage();
    message.To.Add("[email protected]");
    message.Subject = "This is the Subject line";
    message.From = new System.Net.Mail.MailAddress("[email protected]");
    message.Body = "This is the message body";
    System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient("yoursmtphost");
    smtp.Send(message);
} 

Дальнейшее чтение здесь.

person Matthew Allen    schedule 19.01.2016
comment
Это сработало, я не знал о UserService. Большое спасибо! - person NickWojo531; 19.01.2016