Django 在模板中向特定用户显示最新电子邮件
Django Display latest emails to certain user in Template
我创建的 Django 应用在很大程度上依赖于这样发送的电子邮件:
from django.core.mail import send_mail
send_mail(
'Subject here',
'Here is the message.',
'from@example.com',
['to@example.com'],
fail_silently=False,
)
假设我一直像这样向用户的电子邮箱发送电子邮件:
post = get_object_or_404(Post, pk=pk)
post_title = post.title
author_of_post = post.author
post_email = author_of_post.email
send_mail(
'An User Comment on Your Post',
'''Dear User, ''' '''
Your post, ''' + post_title + ''' was comment on by an user. Want to reply and check it out?
--From the People at Site'''
,
'randomemailuser@domain.com',
[post_email],
)
现在我想添加一个通知区域,它会显示发送给用户的所有最新邮件,在上面的例子中post_email
。那我该怎么做。总而言之,我想要一个模板,用户可以在其中查看发送到他们帐户的最新电子邮件,有点像通知区域。谢谢
如果您想跟踪您发送的电子邮件,您需要将此信息保存在您的数据库中,这意味着引入一个模型。这样的事情应该可以解决问题:
#models.py
class SentEmail(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
email_subject = models.CharField(max_length=255)
...
显然,您可以根据需要将任何附加信息附加到此模型上(发送时间、电子邮件正文等)。然后,当您发送电子邮件时,您还需要保存一个模型实例,例如:
from .models import SentEmail
...
send_mail( ... ) # all the stuff you had before
SentEmail.objects.create(
email_subject="An User Comment on Your Post"
user=whoever_the_user_is
)
然后您只需创建一个视图和模板来以与任何其他视图相同的方式显示此信息。
另一种方法
一些第三方服务允许您管理所有交易电子邮件(sendgrid、mailgun 等),并且它们可能会为您提供 API 以获取发送给特定用户的所有电子邮件。这将允许您实现上面描述的那种事情,但老实说,我认为我上面建议的方法会简单得多。
我创建的 Django 应用在很大程度上依赖于这样发送的电子邮件:
from django.core.mail import send_mail
send_mail(
'Subject here',
'Here is the message.',
'from@example.com',
['to@example.com'],
fail_silently=False,
)
假设我一直像这样向用户的电子邮箱发送电子邮件:
post = get_object_or_404(Post, pk=pk)
post_title = post.title
author_of_post = post.author
post_email = author_of_post.email
send_mail(
'An User Comment on Your Post',
'''Dear User, ''' '''
Your post, ''' + post_title + ''' was comment on by an user. Want to reply and check it out?
--From the People at Site'''
,
'randomemailuser@domain.com',
[post_email],
)
现在我想添加一个通知区域,它会显示发送给用户的所有最新邮件,在上面的例子中post_email
。那我该怎么做。总而言之,我想要一个模板,用户可以在其中查看发送到他们帐户的最新电子邮件,有点像通知区域。谢谢
如果您想跟踪您发送的电子邮件,您需要将此信息保存在您的数据库中,这意味着引入一个模型。这样的事情应该可以解决问题:
#models.py
class SentEmail(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
email_subject = models.CharField(max_length=255)
...
显然,您可以根据需要将任何附加信息附加到此模型上(发送时间、电子邮件正文等)。然后,当您发送电子邮件时,您还需要保存一个模型实例,例如:
from .models import SentEmail
...
send_mail( ... ) # all the stuff you had before
SentEmail.objects.create(
email_subject="An User Comment on Your Post"
user=whoever_the_user_is
)
然后您只需创建一个视图和模板来以与任何其他视图相同的方式显示此信息。
另一种方法
一些第三方服务允许您管理所有交易电子邮件(sendgrid、mailgun 等),并且它们可能会为您提供 API 以获取发送给特定用户的所有电子邮件。这将允许您实现上面描述的那种事情,但老实说,我认为我上面建议的方法会简单得多。