From 2bb81eef31b092c8f78b19d9e8f21300d32cf3ba Mon Sep 17 00:00:00 2001 From: HermesSbicego-Laser Date: Fri, 21 Oct 2016 11:46:08 +0200 Subject: [PATCH] - Added attachments logic --- .../Orchard.Email/Models/EmailMessage.cs | 8 +++++++- .../Services/SmtpMessageChannel.cs | 20 ++++++++++++------- 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/src/Orchard.Web/Modules/Orchard.Email/Models/EmailMessage.cs b/src/Orchard.Web/Modules/Orchard.Email/Models/EmailMessage.cs index 3edcd8731..8c588ce91 100644 --- a/src/Orchard.Web/Modules/Orchard.Email/Models/EmailMessage.cs +++ b/src/Orchard.Web/Modules/Orchard.Email/Models/EmailMessage.cs @@ -1,4 +1,6 @@ -namespace Orchard.Email.Models { +using System.Collections.Generic; + +namespace Orchard.Email.Models { public class EmailMessage { public string Subject { get; set; } public string Body { get; set; } @@ -7,5 +9,9 @@ public string From { get; set; } public string Bcc { get; set; } public string Cc { get; set; } + /// + /// IEnumerable of strings representing attachments paths + /// + public IEnumerable Attachments { get; set; } } } \ 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 0ab833e6b..1d869813a 100644 --- a/src/Orchard.Web/Modules/Orchard.Email/Services/SmtpMessageChannel.cs +++ b/src/Orchard.Web/Modules/Orchard.Email/Services/SmtpMessageChannel.cs @@ -9,6 +9,8 @@ using Orchard.ContentManagement; using Orchard.DisplayManagement; using Orchard.Logging; using Orchard.Email.Models; +using System.Linq; +using System.IO; namespace Orchard.Email.Services { public class SmtpMessageChannel : Component, ISmtpChannel, IDisposable { @@ -51,7 +53,8 @@ namespace Orchard.Email.Services { ReplyTo = Read(parameters, "ReplyTo"), From = Read(parameters, "From"), Bcc = Read(parameters, "Bcc"), - Cc = Read(parameters, "CC") + Cc = Read(parameters, "CC"), + Attachments = (IEnumerable)parameters["Attachments"] }; if (emailMessage.Recipients.Length == 0) { @@ -105,8 +108,7 @@ namespace Orchard.Email.Services { if (!String.IsNullOrWhiteSpace(emailMessage.From)) { mailMessage.From = new MailAddress(emailMessage.From); - } - else { + } else { // Take 'From' address from site settings or web.config. mailMessage.From = !String.IsNullOrWhiteSpace(_smtpSettings.Address) ? new MailAddress(_smtpSettings.Address) @@ -119,9 +121,13 @@ namespace Orchard.Email.Services { } } + foreach (var attachmentPath in emailMessage.Attachments) { + if (File.Exists(attachmentPath)) { + mailMessage.Attachments.Add(new Attachment(attachmentPath)); + } + } _smtpClientField.Value.Send(mailMessage); - } - catch (Exception e) { + } catch (Exception e) { Logger.Error(e, "Could not send email"); } } @@ -129,7 +135,7 @@ namespace Orchard.Email.Services { private SmtpClient CreateSmtpClient() { // If no properties are set in the dashboard, use the web.config value. if (String.IsNullOrWhiteSpace(_smtpSettings.Host)) { - return new SmtpClient(); + return new SmtpClient(); } var smtpClient = new SmtpClient { @@ -155,7 +161,7 @@ namespace Orchard.Email.Services { } private IEnumerable ParseRecipients(string recipients) { - return recipients.Split(new[] {',', ';'}, StringSplitOptions.RemoveEmptyEntries); + return recipients.Split(new[] { ',', ';' }, StringSplitOptions.RemoveEmptyEntries); } } } \ No newline at end of file