Django 2电子邮件退订链接

时间:2018-08-27 06:27:52

标签: python-3.6 django-2.0

我想在发送给用户的电子邮件中添加退订链接。我不确定如何实现。我希望用户无需登录即可退订。有关如何实现此目的的任何建议将不胜感激。谢谢

1 个答案:

答案 0 :(得分:0)

我假设您知道如何使用django和其他基本内容发送电子邮件。

对于发送给他们的每封电子邮件,您都必须首先构建退订链接,如下所示。请注意,以下代码具有url模式,以及一个采用uuid字段的模型(具体来说是uuid4,因为这是最安全的字段)。您要这样做的原因是,随机的人无法去YourWebsite.com/unsub_email/1, /2, /3, /4, etc,并通过猜测数字来尽可能多地取消预订。通过按照我的方式进行操作,大约有100的机会中有1,有50+的零后他们甚至会得到1。所以更安全。

def send_user_an_email(id_of_your_object):
    users_email = UsersEmail.objects.get(id=id_of_your_object)
    unsub_link = 'https://www.YourWebsite.com/unsub_email/{}/{}/'.format(users_email.id, users_email.random_uuid)
    subject = 'Your subject line.'
    message = 'Your message body.\n\nGo here to unsubscribe: {}'.format(unsub_link)
    mail_sent = send_mail(subject, message, 'DoNotReply@YourWebsite.com', [users_email.users_email_char_field])
    return mail_sent

然后,您只需编写一个函数,让他们单击该页面上的按钮,它们便会被取消隐藏,否则您就可以这样做。更为安全的选择是向他们显示有效的取消订阅页面,但让他们再次输入其电子邮件,但不向他们显示与有效网址格式相关的电子邮件。对于想要编写错误脚本的人来说,取消订阅列表中的每个人都变得困难得多。