diff --git a/src/Orchard.Web/Modules/Orchard.Email/Controllers/EmailAdminController.cs b/src/Orchard.Web/Modules/Orchard.Email/Controllers/EmailAdminController.cs new file mode 100644 index 000000000..e8f3dad57 --- /dev/null +++ b/src/Orchard.Web/Modules/Orchard.Email/Controllers/EmailAdminController.cs @@ -0,0 +1,63 @@ +using System; +using System.Collections.Generic; +using System.Web.Mvc; +using Orchard.Email.Services; +using Orchard.Localization; +using Orchard.Logging; +using Orchard.UI.Admin; + +namespace Orchard.Email.Controllers { + [Admin] + public class EmailAdminController : Controller { + private readonly ISmtpChannel _smtpChannel; + + public EmailAdminController(ISmtpChannel smtpChannel) { + _smtpChannel = smtpChannel; + T = NullLocalizer.Instance; + } + + public Localizer T { get; set; } + + public ActionResult TestMailSettings(string to, string subject, string body) { + ILogger logger = null; + try { + var fakeLogger = new FakeLogger(); + var smtpChannelComponent = _smtpChannel as Component; + if (smtpChannelComponent != null) { + logger = smtpChannelComponent.Logger; + smtpChannelComponent.Logger = fakeLogger; + } + _smtpChannel.Process(new Dictionary { + {"Recipients", to}, + {"Subject", subject}, + {"Body", body} + }); + if (!string.IsNullOrEmpty(fakeLogger.Message)) { + return Json(new { error = fakeLogger.Message }); + } + return Json(new {status = T("Message sent").Text}); + } + catch (Exception e) { + return Json(new {error = e.Message}); + } + finally { + var smtpChannelComponent = _smtpChannel as Component; + if (smtpChannelComponent != null) { + smtpChannelComponent.Logger = logger; + } + } + } + + private class FakeLogger : ILogger { + public string Message { get; set; } + + public bool IsEnabled(LogLevel level) { + return true; + } + + public void Log(LogLevel level, Exception exception, string format, params object[] args) { + Message = exception == null ? format : exception.Message; + } + } + } +} \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.Email/Orchard.Email.csproj b/src/Orchard.Web/Modules/Orchard.Email/Orchard.Email.csproj index 4db8f3b8f..516ca50c2 100644 --- a/src/Orchard.Web/Modules/Orchard.Email/Orchard.Email.csproj +++ b/src/Orchard.Web/Modules/Orchard.Email/Orchard.Email.csproj @@ -71,6 +71,7 @@ + @@ -132,6 +133,7 @@ + 10.0 $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) diff --git a/src/Orchard.Web/Modules/Orchard.Email/Views/EditorTemplates/Parts/SmtpSettings.cshtml b/src/Orchard.Web/Modules/Orchard.Email/Views/EditorTemplates/Parts/SmtpSettings.cshtml index 495b26104..40c713219 100644 --- a/src/Orchard.Web/Modules/Orchard.Email/Views/EditorTemplates/Parts/SmtpSettings.cshtml +++ b/src/Orchard.Web/Modules/Orchard.Email/Views/EditorTemplates/Parts/SmtpSettings.cshtml @@ -52,4 +52,56 @@ @T("The password for authentication.") + +
+ @T("Test those settings:") +
+ + +
+
+ + +
+
+ +
+
+ +
+ + + @using (Script.Foot()) { + + }
\ No newline at end of file