diff --git a/src/Orchard.Web/Modules/Orchard.Email/Orchard.Email.csproj b/src/Orchard.Web/Modules/Orchard.Email/Orchard.Email.csproj
index 46238621a..a16099f37 100644
--- a/src/Orchard.Web/Modules/Orchard.Email/Orchard.Email.csproj
+++ b/src/Orchard.Web/Modules/Orchard.Email/Orchard.Email.csproj
@@ -79,6 +79,7 @@
+
@@ -129,6 +130,9 @@
+
+
+
10.0
$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)
diff --git a/src/Orchard.Web/Modules/Orchard.Email/Services/DefaultEmailMessageChannelSelector.cs b/src/Orchard.Web/Modules/Orchard.Email/Services/DefaultEmailMessageChannelSelector.cs
index dcf3aa57d..21849190d 100644
--- a/src/Orchard.Web/Modules/Orchard.Email/Services/DefaultEmailMessageChannelSelector.cs
+++ b/src/Orchard.Web/Modules/Orchard.Email/Services/DefaultEmailMessageChannelSelector.cs
@@ -1,21 +1,21 @@
-using Orchard.ContentManagement;
-using Orchard.Email.Models;
-using Orchard.Messaging.Services;
+using Orchard.Messaging.Services;
namespace Orchard.Email.Services {
public class DefaultEmailMessageChannelSelector : Component, IMessageChannelSelector {
- private readonly IOrchardServices _services;
+ private readonly IWorkContextAccessor _workContextAccessor;
public const string ChannelName = "Email";
- public DefaultEmailMessageChannelSelector(IOrchardServices services) {
- _services = services;
+ public DefaultEmailMessageChannelSelector(IWorkContextAccessor workContextAccessor) {
+ _workContextAccessor = workContextAccessor;
}
-
+
public MessageChannelSelectorResult GetChannel(string messageType, object payload) {
if (messageType == "Email") {
+ var workContext = _workContextAccessor.GetContext();
+ var channel = workContext.Resolve();
return new MessageChannelSelectorResult {
Priority = 50,
- MessageChannel = new SmtpMessageChannel(_services.WorkContext.CurrentSite.As())
+ MessageChannel = channel
};
}
diff --git a/src/Orchard.Web/Modules/Orchard.Email/Services/ISmtpChannel.cs b/src/Orchard.Web/Modules/Orchard.Email/Services/ISmtpChannel.cs
new file mode 100644
index 000000000..a56e7ab4c
--- /dev/null
+++ b/src/Orchard.Web/Modules/Orchard.Email/Services/ISmtpChannel.cs
@@ -0,0 +1,6 @@
+using Orchard.Messaging.Services;
+
+namespace Orchard.Email.Services {
+ public interface ISmtpChannel : IMessageChannel {
+ }
+}
\ No newline at end of file
diff --git a/src/Orchard.Web/Modules/Orchard.Email/Services/SmtpMessageChannel.cs b/src/Orchard.Web/Modules/Orchard.Email/Services/SmtpMessageChannel.cs
index b5f715943..982ce56a6 100644
--- a/src/Orchard.Web/Modules/Orchard.Email/Services/SmtpMessageChannel.cs
+++ b/src/Orchard.Web/Modules/Orchard.Email/Services/SmtpMessageChannel.cs
@@ -1,19 +1,29 @@
using System;
using System.Net;
using System.Net.Mail;
+using System.Web.Mvc;
using Newtonsoft.Json;
+using Orchard.ContentManagement;
+using Orchard.DisplayManagement;
using Orchard.Logging;
using Orchard.Email.Models;
-using Orchard.Messaging.Services;
namespace Orchard.Email.Services {
- public class SmtpMessageChannel : Component, IMessageChannel, IDisposable {
+ public class SmtpMessageChannel : Component, ISmtpChannel, IDisposable {
private readonly SmtpSettingsPart _smtpSettings;
+ private readonly IShapeFactory _shapeFactory;
+ private readonly IShapeDisplay _shapeDisplay;
private readonly Lazy _smtpClientField;
public static readonly string MessageType = "Email";
- public SmtpMessageChannel(SmtpSettingsPart smtpSettings) {
- _smtpSettings = smtpSettings;
+ public SmtpMessageChannel(
+ IOrchardServices orchardServices,
+ IShapeFactory shapeFactory,
+ IShapeDisplay shapeDisplay) {
+ _shapeFactory = shapeFactory;
+ _shapeDisplay = shapeDisplay;
+
+ _smtpSettings = orchardServices.WorkContext.CurrentSite.As();
_smtpClientField = new Lazy(CreateSmtpClient);
}
@@ -26,6 +36,8 @@ namespace Orchard.Email.Services {
}
public void Process(string payload) {
+
+
if (!_smtpSettings.IsValid()) {
return;
}
@@ -40,11 +52,16 @@ namespace Orchard.Email.Services {
return;
}
+ // Applying default Body alteration for SmtpChannel
+ var template = _shapeFactory.Create("Template_Smtp_Wrapper", Arguments.From(new {
+ Content = new MvcHtmlString(emailMessage.Body)
+ }));
+
var mailMessage = new MailMessage {
From = new MailAddress(_smtpSettings.Address),
Subject = emailMessage.Subject,
- Body = emailMessage.Body,
- IsBodyHtml = emailMessage.Body != null && emailMessage.Body.Contains("<") && emailMessage.Body.Contains(">")
+ Body = _shapeDisplay.Display(template),
+ IsBodyHtml = true
};
try {
diff --git a/src/Orchard.Web/Modules/Orchard.Email/Views/Template.Smtp.Wrapper.cshtml b/src/Orchard.Web/Modules/Orchard.Email/Views/Template.Smtp.Wrapper.cshtml
new file mode 100644
index 000000000..491632da9
--- /dev/null
+++ b/src/Orchard.Web/Modules/Orchard.Email/Views/Template.Smtp.Wrapper.cshtml
@@ -0,0 +1,4 @@
+@* Override this template to alter the email messages sent by the Smtp channel *@
+
+@Model.Content
+
\ No newline at end of file
diff --git a/src/Orchard.Web/Modules/Orchard.Users/Orchard.Users.csproj b/src/Orchard.Web/Modules/Orchard.Users/Orchard.Users.csproj
index 53be99315..98015ebf9 100644
--- a/src/Orchard.Web/Modules/Orchard.Users/Orchard.Users.csproj
+++ b/src/Orchard.Web/Modules/Orchard.Users/Orchard.Users.csproj
@@ -167,6 +167,9 @@
+
+
+
10.0
$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)
diff --git a/src/Orchard.Web/Modules/Orchard.Users/Services/MembershipService.cs b/src/Orchard.Web/Modules/Orchard.Users/Services/MembershipService.cs
index b9cb972ca..7296f9c0a 100644
--- a/src/Orchard.Web/Modules/Orchard.Users/Services/MembershipService.cs
+++ b/src/Orchard.Web/Modules/Orchard.Users/Services/MembershipService.cs
@@ -109,6 +109,8 @@ namespace Orchard.Users.Services {
var recipient = GetUser(userName);
if (recipient != null) {
var template = _shapeFactory.Create("Template_User_Moderated", Arguments.From(createUserParams));
+ template.Metadata.Wrappers.Add("Template_User_Wrapper");
+
var payload = new {
Subject = T("New account").Text,
Body = _shapeDisplay.Display(template),
diff --git a/src/Orchard.Web/Modules/Orchard.Users/Services/UserService.cs b/src/Orchard.Web/Modules/Orchard.Users/Services/UserService.cs
index 06a8266e8..8126818f3 100644
--- a/src/Orchard.Web/Modules/Orchard.Users/Services/UserService.cs
+++ b/src/Orchard.Web/Modules/Orchard.Users/Services/UserService.cs
@@ -140,6 +140,7 @@ namespace Orchard.Users.Services {
ContactEmail = site.As().ValidateEmailContactEMail,
ChallengeUrl = url
}));
+ template.Metadata.Wrappers.Add("Template_User_Wrapper");
var payload = new {
Subject = T("Verification E-Mail").Text,
@@ -163,6 +164,7 @@ namespace Orchard.Users.Services {
User = user,
LostPasswordUrl = url
}));
+ template.Metadata.Wrappers.Add("Template_User_Wrapper");
var payload = new {
Subject = T("Lost password").Text,
diff --git a/src/Orchard.Web/Modules/Orchard.Users/Views/Template.User.Wrapper.cshtml b/src/Orchard.Web/Modules/Orchard.Users/Views/Template.User.Wrapper.cshtml
new file mode 100644
index 000000000..ec78ec272
--- /dev/null
+++ b/src/Orchard.Web/Modules/Orchard.Users/Views/Template.User.Wrapper.cshtml
@@ -0,0 +1,2 @@
+@* Override this template to alter the email messages sent by the Orchard.Users module *@
+@Display.PlaceChildContent(Source: Model)
\ No newline at end of file