在那里我試圖渲染 HTML 檔案
html_message = get_template('mail.html').render(context=data)
email = EmailMultiAlternatives(
"Subject",
html_message,
settings.EMAIL_HOST_USER,
['example@gmail.com', ],
)
email.attach_alternative(html_message, 'text/html')
email.send(fail_silently=False)
HTML 檔案
{% load static %}
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Title</title>
<link rel="stylesheet" href="{% static 'mail.css' %}">
</head>
<body>
<header>
<div>
<img class="logo" src="{% static 'logo.svg' %}" alt="">
</div>
</header>
</body>
由于結果 HTML 檔案是在沒有靜態檔案的情況下呈現的。
當我像視圖一樣渲染 HTML 時,一切正常
uj5u.com熱心網友回復:
問題是使用生成的部分使用static靜態資產的相對 url(例如/static/logo.svg)。我認為這是預期的行為,并且由于 URL 不是絕對的(缺少主機名部分),因此電子郵件客戶端無法正確獲取它。
這也解釋了為什么它適用于在線版本。
您可能會在這里找到一個很好的線索:Django Get absolute url for static files
編輯:更準確地說,static標簽使用 STATIC_URL設定生成資產路徑,人們傾向于默認設定為static/. 解決您的問題的一種方法是在此處設定一個絕對基本網址(即。https://your-hostname.com/static/)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/465413.html
標籤:html python-3.x django 电子邮件 使成为
