Могу ли я использовать встроенные функции Orchard для отправки электронного письма с приложениями из кода?
Я унаследовал проект, который был построен на Orchard 1.6 и обновлен до 1.9. Это сильно зависит от IMessageManager
, который сейчас не рекомендуется, для отправки электронных писем пользователям:
public void SendEmail(List<string> recipients, string subject, string body)
{
var data = new Dictionary<string, string>();
data.Add("Subject", subject);
data.Add("Body", body);
_messageManager.Send(recipients, "Event_Notification", "email", data);
}
Теперь мне нужно добавить динамически сгенерированные файловые вложения (из MemoryStream
) на некоторые из этих писем. Мне, вероятно, придется полностью переписать это, так как я не вижу способа передать вложения в MessageManager
но я не уверен, что использовать в качестве альтернативы.
Orchard.Email.Services.SmtpMessageChannel
уже, кажется, делает всю тяжелую работу, и это создает System.Net.Mail.MailMessage
который может занять AttachmentCollection
но void Process(IDictionary<string, object> parameters)
метод до сих пор нет.
Должен ли я расширить это, чтобы сделать то, что я хочу? Если так, то как? Или уже есть более простой способ сказать Orchard, чтобы он отправил получателю электронное письмо с заголовком, телом и коллекцией вложений?