我有一个发送代码:
def send_email(site_id, email):
subject = "Sub"
from_email, to = EMAIL_FROM, email
text_content = 'Text'
html_content = render_to_string(
'app/includes/email.html',
{'pk': site_id}
)
msg = EmailMultiAlternatives(subject, text_content, from_email, [to])
msg.attach_alternative(html_content, "text/html")
msg.send()
在我的模板中
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>title</title>
</head>
<body>
<a href="{% url 'mail_view' pk %}">Click</a>
</body>
</html>
但是这段代码生成了这样的链接: http://mail.google.com/en-us/results/30/
结果/ 30没关系, 但我得到mail.google.com而不是“mysite.com” 在我的网站上没有/ en-us /它的/ en /
你们有什么想法吗?
答案 0 :(得分:1)
我怀疑您在电子邮件模板中的链接中缺少绝对网址。当您发送电子邮件时,django会在网址中填入相对网址&#34; / results / 30 /&#34;也许你的gmail邮件客户端正在用它自己的域和语言前缀路径填充url。
您可以尝试这样的事情:
<a href="https://yoursite.com{% url 'mail_view' pk %}">Click</a>
或者为了避免在您的模板中对您的域进行硬编码,您可以使用django sites framework或类似的方法使用下面建议的技术之一:
How can I get the domain name of my site within a Django template?