【发布时间】:2019-02-01 15:46:22
【问题描述】:
我想在发送给用户的电子邮件中添加取消订阅链接。我不确定如何实现它。我希望用户能够取消订阅而无需登录。任何有关如何实现这一点的建议将不胜感激。谢谢
【问题讨论】:
标签: python-3.6 django-2.0
我想在发送给用户的电子邮件中添加取消订阅链接。我不确定如何实现它。我希望用户能够取消订阅而无需登录。任何有关如何实现这一点的建议将不胜感激。谢谢
【问题讨论】:
标签: python-3.6 django-2.0
我假设您知道如何使用 django 发送电子邮件以及其他基本知识。
对于您发送给他们的每封电子邮件,您必须先建立退订链接,如下所示。请注意,以下有一个 url 模式和一个采用 uuid 字段的模型(具体来说是 uuid4,因为它是最安全的)。你想这样做的原因是随机的人不能去YourWebsite.com/unsub_email/1, /2, /3, /4, etc,并通过猜测数字来取消尽可能多的人。通过按照我展示的方式进行操作,有大约 100 分之一的机会,之后有 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
然后,您只需编写一个函数,让他们单击该页面上的按钮,然后他们就会取消订阅,或者您想要这样做。一个更安全的选择是向他们显示一个有效的取消订阅页面,但让他们再次输入他们的电子邮件,但不向他们显示与有效 url 模式相关的电子邮件。这个额外的步骤会让想要编写糟糕脚本的人更难取消列表中的每个人。
【讨论】: