mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2025-10-24 01:49:12 +08:00
Add outcome for when email failed (#7825)
This commit is contained in:

committed by
Sébastien Ros

parent
5ea4a7a397
commit
70adb1833f
@@ -3,6 +3,7 @@ using Orchard.Email.Services;
|
||||
using Orchard.Environment.Extensions;
|
||||
using Orchard.Events;
|
||||
using Orchard.Localization;
|
||||
using Orchard.Logging;
|
||||
using Orchard.Messaging.Services;
|
||||
using Orchard.Workflows.Models;
|
||||
using Orchard.Workflows.Services;
|
||||
@@ -16,6 +17,7 @@ namespace Orchard.Email.Activities {
|
||||
public class EmailActivity : Task {
|
||||
private readonly IMessageService _messageService;
|
||||
private readonly IJobsQueueService _jobsQueueService;
|
||||
public ILogger Logger { get; set; }
|
||||
|
||||
public EmailActivity(
|
||||
IMessageService messageService,
|
||||
@@ -23,13 +25,14 @@ namespace Orchard.Email.Activities {
|
||||
) {
|
||||
_messageService = messageService;
|
||||
_jobsQueueService = jobsQueueService;
|
||||
Logger = NullLogger.Instance;
|
||||
T = NullLocalizer.Instance;
|
||||
}
|
||||
|
||||
public Localizer T { get; set; }
|
||||
|
||||
public override IEnumerable<LocalizedString> GetPossibleOutcomes(WorkflowContext workflowContext, ActivityContext activityContext) {
|
||||
return new[] { T("Done") };
|
||||
return new[] { T("Done"), T("Failed") };
|
||||
}
|
||||
|
||||
public override string Form {
|
||||
@@ -69,17 +72,23 @@ namespace Orchard.Email.Activities {
|
||||
{"NotifyReadEmail",notifyReadEmail }
|
||||
};
|
||||
|
||||
var queued = activityContext.GetState<bool>("Queued");
|
||||
|
||||
if (!queued) {
|
||||
_messageService.Send(SmtpMessageChannel.MessageType, parameters);
|
||||
if (string.IsNullOrWhiteSpace(recipients)) {
|
||||
Logger.Error("Email message doesn't have any recipient for Workflow {0}", workflowContext.Record.WorkflowDefinitionRecord.Name);
|
||||
yield return T("Failed");
|
||||
}
|
||||
else {
|
||||
var priority = activityContext.GetState<int>("Priority");
|
||||
_jobsQueueService.Enqueue("IMessageService.Send", new { type = SmtpMessageChannel.MessageType, parameters = parameters }, priority);
|
||||
}
|
||||
var queued = activityContext.GetState<bool>("Queued");
|
||||
|
||||
yield return T("Done");
|
||||
if (!queued) {
|
||||
_messageService.Send(SmtpMessageChannel.MessageType, parameters);
|
||||
}
|
||||
else {
|
||||
var priority = activityContext.GetState<int>("Priority");
|
||||
_jobsQueueService.Enqueue("IMessageService.Send", new { type = SmtpMessageChannel.MessageType, parameters = parameters }, priority);
|
||||
}
|
||||
|
||||
yield return T("Done");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user