2015-10-10 84 views
1

我有一個發送代碼:Django中發送電子郵件的鏈接

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/only/en/

你們有什麼想法嗎?

+0

那是什麼'mail_view'呢?這是您的觀點還是來自其他第三方? – Babu

回答

2

我懷疑你在你的電子郵件模板中的鏈接中缺少絕對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?