gpt4 book ai didi

django - 尝试使用 Django send_mail 和 SendGrid 发送电子邮件

转载 作者:行者123 更新时间:2023-12-04 05:13:30 25 4
gpt4 key购买 nike

我正在尝试使用 SendGrid 发送邮件,但是每当我发送 HTML 格式的电子邮件时,它都会显示电子邮件中的 HTML 标记,而不是根据需要设置 HTML 格式。这是我要发送的内容:

<html>
<head></head>
<body>
<p>Hi!<br>
How are you?<br>
</p>
</body>
</html>

这是我的代码:
 def send(self, group=None):
current_site = Site.objects.get_current()
domain = unicode(current_site.domain)
ctx = {
"group": group,
"signup_code": self,
"domain": domain,
}
msg = MIMEMultipart('alternative')
subject = render_to_string("signup_codes/invite_user_subject.txt", ctx)
msg['subject'] = render_to_string("signup_codes/invite_user_subject.txt", ctx)
message = render_to_string("signup_codes/invite_user.txt", ctx)
text = "Hi!\nHow are you?\n"
part1 = MIMEText(text, 'plain')
part2 = MIMEText(message,'html')
msg.attach(part1)
msg.attach(part2)
send_mail(subject, message, settings.DEFAULT_FROM_EMAIL, [self.email])
self.sent = datetime.datetime.now()
self.save()

注: invite_user.txt包含上面的html。

对为什么它没有认识到这是 HTML 并相应地对其进行格式化的任何见解?我错过了什么吗?

最佳答案

默认情况下,Django 邮件程序仅发送电子邮件的文本部分。您需要将其设置为 html(这是不好的做法)或使用 EmailMultiAlternatives 类。所以,我认为这就是你真正要寻找的:

from django.core.mail import EmailMultiAlternatives

def send(self, group=None):
current_site = Site.objects.get_current()
domain = unicode(current_site.domain)
ctx = {
"group": group,
"signup_code": self,
"domain": domain,
}

subject = render_to_string("signup_codes/invite_user_subject.txt", ctx)
text_content = "Hi!\nHow are you?\n"
html_content = render_to_string("signup_codes/invite_user.txt", ctx)

msg = EmailMultiAlternatives(subject, text_content, settings.DEFAULT_FROM_EMAIL, [self.email])
msg.attach_alternative(html_content, "text/html")

msg.send()

此外,还有一个官方的 SendGrid python 包,您可能需要考虑将其作为使用内置 Django 函数的替代方法。在这里查看:

https://github.com/sendgrid/sendgrid-python/

关于django - 尝试使用 Django send_mail 和 SendGrid 发送电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14592070/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com