2

I have been sending email from C# and they are working fine, but now I am also looking for the functionality to allow receiver to unsubscribe. I am unable to get how to proceed as I have no idea. I googled enough so need some hint.

Below is my code:

  MailMessage loginInfo = new MailMessage();
  loginInfo.To.Add(EmailTxt.Text.ToString());
  loginInfo.From = new MailAddress(sEmailId);
  loginInfo.Subject = "Subject";
  loginInfo.Body = "Your username is: " +;
  loginInfo.IsBodyHtml = true;

  SmtpClient smtp = new SmtpClient();
  smtp.Host = sHost;
  smtp.Port = 25;
  smtp.EnableSsl = false;
  smtp.Credentials = new System.Net.NetworkCredential("", "");
  smtp.DeliveryMethod = SmtpDeliveryMethod.Network;
  smtp.Send(loginInfo); 
4

3 回答 3

6

如果您已经在数据库中维护用户电子邮件 ID,则取消订阅很容易。

请按照以下步骤操作:

第 1 步:在用户表中创建一个额外的列,就像unsubscribe在数据库中一样。它将采用trueorfalse作为值。将默认设置为,false以便每个订阅用户都能收到电子邮件。

注意:在向用户发送邮件之前,请检查他们的unsubscribe专栏。如果是假的,请发送电子邮件。如果是真的,请不要发送电子邮件,因为他们已取消订阅。

Step2:创建一个退订URL,如下所示:

http://mywebsite.com/unsubscribeme/emailID=xyz@gmail.com

第 3 步:将此 URL 作为取消订阅 URL 发送给用户,这样每当他想取消订阅时,只需单击该 URL 即可。

Step4:一旦用户点击给定的 URL,读取 emailID 的 QueryString 值emailID=xyz@gmail.com

Step5:unsubscribe通过将列值设置为来更新用户表信息true

例子 :

 //get user EmailID by QueryString as below:
 String EmailID=Reques.QueryString["emailID"].ToString();

//Update the usertable as below:
String Command ="update usertable set unsubscribe='true' where emailid='"+EmailID+"'";
于 2013-11-08T09:20:14.460 回答
1

邮件列表的概念包括电子邮件地址列表,通常保存在数据库中。您的代码从“EmailTxt”添加接收者,我猜是文本框?

  • 只要您不在某处保存电子邮件地址,就无需取消订阅
  • 如果您保存电子邮件地址,则创建另一个允许人们取消订阅的文件。

取消订阅文件的功能通常如下:

  • 接收要取消订阅的电子邮件地址作为查询字符串参数
  • 在单个文本框中显示此电子邮件地址以及“取消订阅”按钮
  • 如果用户单击此按钮,则从数据库中删除电子邮件地址。
于 2013-11-08T08:34:41.923 回答
1

我猜你的订阅者存储在某个地方。因此,取消订阅的简单方法是通过其电子邮件地址从商店中删除记录。

它与 SmtpClient 类无关。

于 2013-11-08T08:32:55.620 回答