正在尝试使用Django send_mail和SendGrid发送电子邮件
我正在尝试使用SendGrid发送邮件,但每当我发送HTML格式的电子邮件时,它都会在电子邮件中显示HTML标记,而不是按需要格式化HTML。以下是我想要发送的内容:正在尝试使用Django send_mail和SendGrid发送电子邮件,django,sendgrid,Django,Sendgrid,我正在尝试使用SendGrid发送邮件,但每当我发送HTML格式的电子邮件时,它都会在电子邮件中显示HTML标记,而不是按需要格式化HTML。以下是我想要发送的内容: <html> <head></head> <body> <p>Hi!<br> How are you?<br> </p> </body> </html> 注意:invite\u user.tx
<html>
<head></head>
<body>
<p>Hi!<br>
How are you?<br>
</p>
</body>
</html>
注意:invite\u user.txt
包含上述html
有没有洞察到为什么它不承认这是HTML并相应地格式化它?我遗漏了什么吗?默认情况下,Django邮件程序只发送电子邮件的文本部分。您需要将其设置为html(这是一种糟糕的做法),或者使用EmailMultiAlternations类。所以,我认为这才是你真正想要的:
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()
还有一个正式的SeNETGRAPH Python包,您可以考虑使用内置的Django函数来替代它。在这里查看:
您从未发送您创建的
msg
。您只需发送两个字符串。查看django html电子邮件,只使用他们的邮件类型。好的,谢谢——虽然它还没有格式化——你知道为什么吗?它只是显示为文本。谢谢!你刚刚救了我一天:-)
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()