python - Django 发送带有链接的电子邮件

标签 python django url

我有一个发送代码:

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/

results/30 没问题, 但我得到的是 mail.google.com 而不是“mysite.com” 在我的网站上没有/en-us/它只有/en/

你们有什么想法吗?

最佳答案

我怀疑您在电子邮件模板中的链接中缺少绝对 URL。当您发送电子邮件时,django 会用相对 url“/results/30/”填充 url,也许您的 gmail 邮件客户端会用它自己的域和语言前缀路径填充 url。

你可以尝试这样的事情:

<a href="https://yoursite.com{% url 'mail_view' pk %}">Click</a>

或者为了避免在模板中对您的域进行硬编码,您可以使用以下使用 django 站点框架或类似框架建议的技术之一:

How can I get the domain name of my site within a Django template?

关于python - Django 发送带有链接的电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33054658/

相关文章:

python - 防止 Python print() 在 Windows 上自动换行转换为 CRLF

python - 在spark(python)中划分两个rdds的值

database - Django:在嵌套数据结构中序列化模型?

Android 到达 getInputStream 时崩溃

php - 如何让 &curren 按字面显示,而不是作为 HTML 实体

python - 我想要一个 elisp 脚本在光标下执行 Python 单行代码

python - 如何在 Python 中高效地搜索一组列表?

django - 转义 Django 模板变量的简单方法

python - ImportError:使用 manage.py 时没有名为 django.core.management 的模块

java - HttpURLConnection - 在 servlet 中获取普通网站而不是移动网站