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;