The information is set on the form on the settings tab and is later used in the actor that sends emails called SendEmailAfterSubmissionActor. I can't see a way to get to that information using the above events so I'll do it another way.
So to set a default value for the from-value you could either hook into when form is saved (the emailsettings are stored on the form content type) or add some logic to when the actor is run. I chose the latter of the two.
The actor is executed by a class called ActorsExecutingService so I'll just modify slightly what this class is doing when it's loading the actors that should be run.
public class ImprovedActorsExecutingService : ActorsExecutingService { public const string DefaultEmail = "info@mogul.com"; public override IEnumerable<IPostSubmissionActor> GetFormSubmissionActors(Submission submission, FormContainerBlock formContainer, FormIdentity formIden, HttpRequestBase request, Guid permanentFormSubmissionId, bool isFormFinalizedSubmission) { var actors = base.GetFormSubmissionActors(submission, formContainer, formIden, request, permanentFormSubmissionId, isFormFinalizedSubmission); var emailActor = actors.OfType<SendEmailAfterSubmissionActor>().FirstOrDefault(); var emailModels = emailActor.Model as IEnumerable<EmailTemplateActorModel>; foreach (var emailModel in emailModels) { if (string.IsNullOrWhiteSpace(emailModel.FromEmail)) { emailModel.FromEmail = DefaultEmail; } } return actors; } }
Of course you also need to tell EPiServer to use your new improved version :)
You can do this when configuring the ioc container
private static void ConfigureContainer(ConfigurationExpression container) { container.For<ActorsExecutingService>().Use<ImprovedActorsExecutingService>(); ... }
There is probably an easier way to do this...or there should be at least but it's a fun way of doing it :)
Thank you for your help Daniel! :) It worked out with the solution you provided.
Sweet! I didn't try setting the from address in smtp tag in web.config I just realized. That would of course be easiest if it worked. Probably should be implemented that way if not... :)
But it was a fun coding exercise anyway...
Hi!
I'am trying to create a default value for my email template for all episerver forms. I'am talking about the window where you decide if you are going to send a mail after the form is submitted.
Where if "From" is empty i want to insert a default value. I have tried doing this by jacking into episerver form events
This is my initializationmodule:
[InitializableModule]
();
public class EpiserverFormsInitializationModule : IInitializableModule
{
public void Initialize(InitializationEngine context)
{
var formsEvents = ServiceLocator.Current.GetInstance
formsEvents.FormsSubmissionFinalized += SubmissionFinalized;
}
public void Uninitialize(InitializationEngine context)
{
}
public void SubmissionFinalized(object o, FormsEventArgs e)
{
}
}
However in the param "e" in my SubmissionFinalized method i can find all kind of properties regarding the form but not anything for the recipient or sender to modify. Any information you can provide on how to best do this would be helpful :)
I have tried finding a good post on how to find these values but ended up empty handed.
*Help me obi wan, you are my only hope*
Best regards Jonas.C