【问题标题】:Django sending emails with linksDjango 发送带有链接的电子邮件
【发布时间】:2016-01-08 08:52:44
【问题描述】:

我有一个发送代码:

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/

你们有什么想法吗?

【问题讨论】:

  • mail_view 是做什么的?这是您的观点还是任何其他第三方的观点?

标签: python django url


【解决方案1】:

我怀疑您在电子邮件模板中的链接中缺少绝对网址。当您发送电子邮件时,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?

【讨论】:

    猜你喜欢
    • 2012-08-10
    • 2016-07-05
    • 2018-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-11
    • 1970-01-01
    • 2016-04-08
    相关资源
    最近更新 更多