Регистрация работает правильно, но задание, которое я запускаю, остается в очереди, и я не получаю никаких писем.
Итак, в моем контроллере MVC у меня есть следующий код:
public async Task Register(RegisterViewModel model)
{
//register correctly the user
//I send the email
BackgroundJob.Enqueue(() =>
NotifyRegistration(user.Id, user.UserName, user.Email)
);
...
}
[AutomaticRetry(Attempts = 5)]
public async Task NotifyRegistration(string userId, string username, string email)
{
//I calculate callbackUrl
var viewsPath = Path.GetFullPath(HostingEnvironment.MapPath(@"~/Views/Emails"));
var engines = new ViewEngineCollection();
engines.Add(new FileSystemRazorViewEngine(viewsPath));
var emailService = new EmailService(engines);
var emailToSend = new NewRegisteredUserEmail
{
To = email, UserName = username, CallbackUrl = callbackUrl
};
emailService.Send(emailToSend);
}
Я не могу отладить метод NotifyRegistration. Я не знаю, почему. Я использую Postal, поэтому EmailService — не моя реализация. Вот как я настроил службу smtp:
Если я запускаю панель Hangfire, я вижу запрошенные задания.

Но больше ничего не произошло.
Что мне не хватает? отправить письмо?
Спасибо
ОБНОВЛЕНИЕ
В файле start.cs я написал это:
var options = new SqlServerStorageOptions
{
QueuePollInterval = TimeSpan.FromSeconds(1)
};
GlobalConfiguration.Configuration
.UseSqlServerStorage("DbConnectionString", options)
.UseFilter(new LogEmailFailureAttribute());
app.UseHangfireDashboard();
app.UseHangfireServer();
ОБНОВЛЕНИЕ 2
Я преобразовал свою регистрацию NotifyRegistration следующим образом:
[AutomaticRetry(Attempts = 5)]
public async Task NotifyRegistration(string userId, string username, string email, EmailService emailService)
{
//I calculate callbackUrl
var emailToSend = new NewRegisteredUserEmail
{
To = email, UserName = username, CallbackUrl = callbackUrl
};
emailService.Send(emailToSend);
}
Подробнее здесь: https://stackoverflow.com/questions/395 ... n-enqueued
Мобильная версия