Newsletter Studio 18 targets Umbraco 18 and .NET 10. Most public APIs that interact with storage, providers, or rendering are now asynchronous.
INewsletterStudioService has been updated:
AddRecipient(...) -> AddRecipientAsync(...)AddOrUpdateSubscriptions(...) -> AddOrUpdateSubscriptionsAsync(...)GetMailingListsForAllWorkspaces(...) -> GetMailingListsForAllWorkspacesAsync(...)GetMailingList(...) -> GetMailingListAsync(...)GetMailingLists(...) -> GetMailingListsAsync(...)GetSubscriptionsFor(...) -> GetSubscriptionsForAsync(...)GetRecipientsByEmail(...) -> GetRecipientsByEmailAsync(...)ParseUnsubscribeToken(...) -> ParseUnsubscribeTokenAsync(...)Unsubscribe(...) -> UnsubscribeAsync(...)RemoveRecipient(...) -> RemoveRecipientAsync(...)ICampaignEmailService has been updated:
GetByContentKey(...) -> GetByContentKeyAsync(...)GetByKey(...) -> GetByKeyAsync(...)GetById(...) -> GetByIdAsync(...)Save(...) -> SaveAsync(...)Duplicate(...) -> DuplicateAsync(...)IWorkspaceService has been updated:
CurrentUserAccess(...) -> CurrentUserAccessAsync(...)GetByKey(...) -> GetByKeyAsync(...)GetAll(...) -> GetAllAsync(...)Save(...) -> SaveAsync(...)IRecipientListProvider implementations must now return Task from the provider methods:
GetLists(...) -> GetListsAsync(...)GetReceiversForList(...) -> GetReceiversForListAsync(...)GetByEmail(...) -> GetByEmailAsync(...)GetDataModel(...) -> GetDataModelAsync(...)Unsubscribe(...) -> UnsubscribeAsync(...)UnsubscribeAll(...) -> UnsubscribeAllAsync(...)GetEditInformation(...) -> GetEditInformationAsync(...)ReportSoftBounce(...) -> ReportSoftBounceAsync(...)ReportHardBounce(...) -> ReportHardBounceAsync(...)IEmailServiceProvider has been updated:
ValidateSettings(...) -> ValidateSettingsAsync(...)IEmailServiceProviderWithBackgroundJob has been updated:
ExecuteBackgroundJob(...) -> ExecuteBackgroundJobAsync(...)The built-in provider implementations and helper methods follow the same async pattern:
MailKitSmtpEmailServiceProvider.GetConnectedAndAuthenticatedClient(...) -> GetConnectedAndAuthenticatedClientAsync(...)UmbracoMailKitEmailServiceProvider.GetConnectedAndAuthenticatedClient(...) -> GetConnectedAndAuthenticatedClientAsync(...)SmtpProviderPop3BounceProcessor.DoWork(...) -> DoWorkAsync(...)Email control rendering is async in v18. Custom email control types should use:
BuildViewModelAsync(...)DoBuildViewModelAsync(...)UpdateUniqueViewModelAsync(...)DoUpdateUniqueViewModelAsync(...)If your custom control inherits from EmailControlTypeBase<TControlDataModel, TBlockViewModel>, update your overrides to return Task<TBlockViewModel>.