Я использую asp.net mvc 3 и кварцевый планировщик.
В настоящее время у меня есть это
- Задание создается и выполняется.
- Идет к контроллеру, где я сопоставляю домен для просмотра моделей с помощью автомпера
- Результаты отправляются на контроллер, где я хочу использовать Action Mailer
Я получаю ошибку
System.ArgumentNullException was unhandled by user code
Message=Value cannot be null.
Parameter name: httpContext
Source=System.Web
ParamName=httpContext
StackTrace:
at System.Web.Routing.RequestContext..ctor(HttpContextBase httpContext, RouteData routeData)
at ActionMailer.Net.MailerBase.Email(String viewName, Object model, String masterName)
at EmailController.SendCalendarAppointmentNotifiation(CalendarAppointmentReminderVM vm) in EmailController.cs:line 73
at RemindersController.CalendarAppointmentsReminders(List`1 taskReminders) in RemindersController.cs:line 54
at QuartzJobs.AppointmentRemindersJob.Execute(JobExecutionContext context) in AppointmentRemindersJob.cs:line 39
at Quartz.Core.JobRunShell.Run()
InnerException:
// Работа
public void Execute(JobExecutionContext context)
{
// some code to do some checking and to get results above(not shown)
RemindersController remindersController = new RemindersController();
remindersController.CalendarAppointmentsReminders(calendarAppointmentReminders);
}
// контроллер (для отображения) \
public void CalendarAppointmentsReminders(List<AppointmentReminder> appointments)
{
List<CalendarAppointmentReminderVM> vm = Mapper.Map<List<CalendarAppointment>, List<CalendarAppointmentReminderVM>>(appointments.Select(x => x.CalendarAppointment).ToList());
Mapper.Map<List<AppointmentReminder>, List<CalendarAppointmentReminderVM>>(appointments, vm);
foreach (var v in vm)
{
new EmailController().SendCalendarAppointmentNotifiation(v);
}
}
// mvc mailer
public EmailResult SendCalendarAppointmentNotifiation(CalendarAppointmentReminderVM vm)
{
To.Add(vm.To);
Subject = String.Format("Subject");
return Email("SendCalendarAppointmentEmail", vm);
}
Умирает прямо на return Email("SendCalendarAppointmentEmail", vm);
Я хочу использовать это, поскольку я использую его для рассылки всех моих других электронных писем, и я считаю, что это намного лучший способ отправки электронных писем (проще сделать их лучше, так как вы можете использовать главные страницы строго типизированные взгляды).