There is a lot of things that can be done using the services and repositories that Newsletter Studio provides. You can explore these APIs using the "GlobalFactory" which is a service locator that the package uses internally.
For example, you can access the Mailing List Repository like this:
NewsletterStudio.Infrastucture.GlobalFactory.Current.MailingListRepository
You can use the GlobalFactory to access the NewsletterRepository to create a Newsletter from your own code. In this example we create a Newsletter and set the ScheduledSendDate so that the automatic background-job for sending will pick it up and send it the next time it fires.
public bool CreateNewsletter()
{
List<int> mailingListIdsToSendTo = new List<int>();
mailingListIdsToSendTo.Add(7);
mailingListIdsToSendTo.Add(8);
var email = new Newsletter();
email.CreatedByUserId = 0;
email.Name = "Email from API";
email.SenderName = "Sender Name";
email.EmailFrom = "sender@test.com";
email.EmailSubject = "The Subject";
email.MessageBody = "<p>This is the body</p>";
email.SubscriptionAlias = string.Join(",",mailingListIdsToSendTo.Select(x=>$"NewsletterStudioSubscriptionProvider_{x}"));
// Setting scheduled date to 1 min from now to automatically send
email.ScheduledSendDate = DateTime.Now.AddMinutes(1);
GlobalFactory.Current.NewsletterRepository.Save(email);
return true;
}
This would save the Newsletter to the database and the background-job that sends scheduled emails would pick this up and send the Newsletter the next time it runs. To trigger this job manually, just go to this URL on your domain: /umbraco/NewsletterStudio/Actions/NewsletterCheckForScheduledSendOut
Also note, you might want to double check /config/umbracoSettings.config to make sure that the URLs to the scheduled jobs is correct, URLs might differ in development, stage and production. They should look something like this:
<scheduledTasks>
<task log="true" alias="ScheduledNewsletterSend" interval="300" url="https://www.your-site.com/umbraco/NewsletterStudio/Actions/NewsletterCheckForScheduledSendOut" />
<task log="true" alias="ScheduledNewsletterBounce" interval="840" url="https://www.your-site.com/App_Plugins/NewsletterStudio/Pages/HandleBounces.aspx" />
</scheduledTasks>
Also, check out our Contrib-project on GitHub where you can find more examples.
Using a render task an developer can hook into the rendering process of the email and make changes to the message body/subject. This can be done both on an overall level and on each individual email (ie. personalization). This feature could for example be used to replace [sometext] inside the messag…
Can be used to hook into other systems or data sources. Newsletter Studio will use the providers to fetch the needed information about the receivers. All current subscriptions options (Newsletter Studios native mailing list and Umbraco members) are build with providers and it's easy to implement you…
To interact with Newsletter Studio from the front end we provide a very simple API in the static class NewsletterStudio.Api. This class has several methods for adding and removing subscribers both from the built in subscriptions and from Umbraco's member section (it won't delete anything but it chan…
Since version 1.4.5 and 2.1 Newletter Studio contains some events that you as a developer can use when you develop your solutions. Event name v1.4.5+ v2.1+ NewsletterStudio.Services.SendNewsletterService.SendningInitializing Yes Yes NewsletterStudio.Services.SendNewsletterService.Sent Yes Ye…
The default property fields for receivers in Newsletter Studio are: name, e-mail, subscribed date and status. But some clients want to add custom data to their contacts.Since version 2.1 we've decided to prepare the underlying data layer for this by adding a new property called “Data” on the Receive…