unsubscribe users from mailing lists(email campaigns)
Hello All,
Sitefinity's default unsubscribe link is not visible in the emails that I send out. I tried to find a solution online but could not find anything. So, I decided to implement my own logic of unsubscribing users from mailing lists. I implemented it tested it, all works fine.
Consider the following scenario:
1)I create a new mailing list
2)I import subscribers from a csv file to the mailing list. let us assume csv contains 10 records and the email of one of them is abc@xyz.com
3)I create a campaign and send out an issue with my unsubscribe link in the email.
4) user abc@xyz.com gets the email, decides to unsubscribe. So, clicks on unsubscribe link and so he is removed from the mailing list.
5) Now I go back to the mailing list, and reimport the csv list. the user abc@xyz.com gets back on the mailing list and gets all emails again going forward.
Is there some way to keep the user and flag him as unsubscribed? I can maintain a separate list of unsubscribed users and which mailing list they unsubscribed from, but when the import happens, how do I exclude the users who unsubscribed already?
PS: I am using Sitefinity 6.3
Hello Phani,
As you have a custom code to unsubscribe the users, you can implement a logic to manage separate list for that unsubscribed users.
Than on User import you can add your logic once the users are imported to remove the already unsubscribed ones. To do so:
- Inherit the ImportSubscribers dialog:
using System;using System.Collections.Generic;using System.Linq;using System.Web;using Telerik.Sitefinity.Modules.Newsletters.Web.UI.Forms;namespace SitefinityWebApp.Examples public class MyImport : ImportSubscribers protected override void ImportSubscribersButton_Click(object sender, EventArgs e) base.ImportSubscribersButton_Click(sender, e); // implement your logic for the already unsubscribed users protected void Application_Start(object sender, EventArgs e) Bootstrapper.Initialized += new EventHandler<Telerik.Sitefinity.Data.ExecutedEventArgs>(Bootstrapper_Initialized);private void Bootstrapper_Initialized(object sender, Telerik.Sitefinity.Data.ExecutedEventArgs e) if (e.CommandName == "Bootstrapped") ObjectFactory.Container.RegisterType(typeof(DialogBase), typeof(MyImport), (typeof(ImportSubscribers)).Name); using Telerik.Microsoft.Practices.Unity;