如何在 Django 中發送電子郵件

在本教學中,我們將逐步介紹如何使用Django發送電子郵件。內容包括如何配置Django的SMTP連接、如何為您的電子郵件服務商設置應用密碼,以及如何通過Django shell發送郵件。我們還將探討如何為您的Django應用設置聯絡表單,使您的客戶能夠與您聯繫。

大多數網路應用程式都使用電子郵件來管理重要的操作,例如重設密碼、帳戶激活、接收客戶反饋、發送新聞通訊和行銷活動。這些任務大多需要專門的服務,如SendGridMailgun。但如果您的網站預計不會有大量訪客,您實際上可以通過個人電子郵件服務完成許多工作。

使用個人電子郵件發送郵件對於小型或測試項目來說是一個合理的選擇,因此我們在這裡採取這種方法以保持簡單。然而,使用個人電子郵件服務來運行生產網站並不是一個好主意。您可以了解更多關於Gmail發送限制,或參考您的電子郵件服務商的限制。

注意:本教學的完整代碼可在GitHub上獲得。

理解SMTP

SMTP(或稱簡單郵件傳輸協議)是一套規則,用於確定電子郵件如何從發送者傳輸到接收者。SMTP 伺服器使用此協議來發送和中繼外發郵件。(注意,其他協議管理郵件如何接收。)

SMTP 伺服器總是具有一個唯一的地址,以及一個特定的端口用於發送消息,大多數情況下是587。我們將看到在 Django 中發送郵件時端口的重要性。

由於我們將使用 Gmail,我們將使用的地址是smtp.gmail.com,端口將是 587。

現在讓我們看看如何使用 Django 發送郵件。

創建 Django 專案

每個 Django 專案都應該有一個虛擬環境,因為我們不希望搞亂專案依賴。要創建一個,運行以下命令:

python -m venv .venv

注意:如果您不熟悉虛擬環境,請確保查看我們的Python 虛擬環境指南

上述命令創建一個名為.venv的虛擬環境。要激活此虛擬環境,您可以使用以下命令:

source .venv/bin/activate

由於 Django 是一個第三方包,您必須使用 pip 安裝它:

pip install django

這將安裝 Django 的最新版本,您可以使用pip freeze來檢查。

要建立一個Django專案,您需使用命令行工具django-admin:

django-admin startproject EmailProject

上述命令將創建一個名為EmailProject的Django專案,但您可以根據需要命名專案。

接著,進入專案目錄並啟動伺服器:

cd EmailProject
python manage.py runserver

啟動Django伺服器後,在瀏覽器中訪問http://localhost:8000。您將看到一個自動生成的頁面,其中包含最新Django版本的發行說明。

修改設定

在發送郵件前,您需要修改設定檔。首先,使用tree命令定位該檔案:

注意:為簡化操作,本教程僅使用UNIX(macOS或Linux)系統命令。

tree

tree命令輸出目錄的檔案結構。在此例中,由於未指定具體目錄路徑,若位於專案根目錄,將得到類似以下結果:

├── EmailProject
│   ├── asgi.py
│   ├── __init__.py
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
└── manage.py

1 directory, 6 files

本教程中將持續修改的檔案是位於EmailProject資料夾內的settings.py

settings.py包含所有專案配置,並允許您設定自訂變數。如Django文檔所述,“設定檔僅是一個具有模組級變數的Python模組”。

讓我們來看看使用Django發送電子郵件所需的設定。打開EmailProject/settings.py文件,並將以下設定貼到文件底部:

# EmailProject/settings.py

# Bottom of the file
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = ''
EMAIL_PORT = 587
EMAIL_USE_TLS = True
EMAIL_HOST_USER = ''
EMAIL_HOST_PASSWORD = ''

接下來,我們將逐一分析上述設定中的每個部分。

郵件後端

設定EMAIL_BACKEND指定了我們的Django專案將使用哪個後端來連接SMTP伺服器。

此變數指向smtp.EmailBackend類別,該類別接收所有發送電子郵件所需的參數。我強烈建議您直接查看Django原始碼中的類別建構子,您會驚訝於這段程式碼的可讀性。

注意:雖然此類別是默認的EMAIL_BACKEND,但在Django設定中明確指定仍被視為良好實踐。

所有其他電子郵件設定都將基於此EmailBackend類別的建構子。

郵件主機

EMAIL_HOST 設定指的是您將使用的SMTP伺服器網域,這取決於您的電子郵件供應商。以下是一個表格,列出了三個常見供應商對應的SMTP伺服器主機:

Email provider SMTP server host
Gmail smtp.gmail.com
Outlook/Hotmail smtp-mail.outlook.com
Yahoo smtp.mail.yahoo.com

目前我們將此設定留空,因為稍後我們會使用.env檔案來避免將敏感金鑰或每站配置硬編碼。您絕不應將憑證直接設置在程式碼中。

我們將使用Django Environ來解決這個問題。

電子郵件埠

EMAIL_PORT設定必須設為587,因為這是大多數SMTP伺服器的預設埠。對於個人電子郵件供應商來說,這一點依然適用。

此埠與TLS加密一起使用,以確保電子郵件發送的安全性。

電子郵件使用TLS

傳輸層安全(TLS)是一種安全協議,用於在網路上加密網路應用程式(Django)與伺服器(SMTP伺服器)之間的通訊。

最初,我們將EMAIL_USE_TLS變數設為True。這意味著Django將使用傳輸層安全來連接SMTP伺服器並發送電子郵件。(對於個人電子郵件供應商來說,這是必須的。)

電子郵件主機使用者

EMAIL_HOST_USER設定是您的個人電子郵件地址。目前先將其留空,因為我們將使用django-environ來設置所有這些憑證。

電子郵件主機密碼

EMAIL_HOST_PASSWORD 設定是您將從電子郵件帳戶獲得的應用密碼——這個過程我們將在接下來的章節後立即進行。

同樣地:保持此設定空白,因為我們稍後將使用環境變數。

在 Gmail 設定應用密碼

要使用 EMAIL_HOST_PASSWORD 設定,您需要啟用 安全性較低的應用程式存取,並從您的個人電子郵件地址獲得一個應用密碼。

如果您不啟用 安全性較低的應用程式存取,您可能會遇到 SMTPAuthenticationError,因為 Django 無法遵守 Google 的安全協議。

您可以選擇使用您的正常密碼,但這比使用應用密碼風險更大。我的建議是創建一個新的 Gmail 帳戶或使用一個“測試”電子郵件地址。

考慮到這一點,您可以按照以下步驟獲取 Gmail 應用密碼。請注意,如果您正在使用現有帳戶並已啟用兩步驟驗證,則可以跳過步驟 2 和 3:

  1. 創建或登錄 Gmail 帳戶
  2. 前往 myaccount.google.com/lesssecureapps 並開啟安全性較低的應用程式選項。
  3. 啟用雙因素認證,因為這是獲取應用程式密碼的必要條件。
  4. 現在您已啟用雙因素認證,接下來該獲取應用程式密碼了。您可以通過前往您的Google帳戶的安全部分,向下滾動至“登入Google”部分,然後點擊應用程式密碼來完成此操作。

在轉至應用程式密碼頁面前,您需要重新輸入您的密碼(帳戶密碼)。

進入後,點擊選擇應用,在此您將為該應用程式密碼選擇一個自定義名稱——例如“Django發送郵件”——然後點擊生成

A new window will show up with a sixteen-character password. Copy it, because we’ll need it to configure our Django project.

如果您使用的是其他電子郵件提供商,請務必閱讀以下指南:

使用Django Environ隱藏敏感密鑰

即使在開發中僅發送電子郵件,也不應將密碼直接寫入源代碼。當您使用版本控制系統並通過GitHub託管您的項目時,這一點變得更加重要。您不希望人們訪問您的數據。

讓我們看看如何使用Django-environ來防止這種情況。

EmailProject目錄(settings.py文件所在位置)內創建一個.env文件,使用以下命令:

cd EmailProject/
ls

settings.py # 設置文件必須在此處

touch .env

現在,打開該.env文件並輸入以下鍵值對:

EMAIL_HOST=smtp.gmail.com
EMAIL_HOST_USER=YourEmail@address
EMAIL_HOST_PASSWORD=YourAppPassword
RECIPIENT_ADDRESS=TheRecieverOfTheMails

分解此文件的內容:

  • EMAIL_HOST:您的電子郵件提供商SMTP服務器地址。請參閱上面的電子郵件主機表以快速指導。在此例中,我使用smtp.gmail.com,即Gmail SMTP地址。
  • EMAIL_HOST_USER:您的電子郵件地址。
  • EMAIL_HOST_PASSWORD:您剛剛生成的應用密碼。請注意,它不包含任何空格。
  • RECIPIENT_ADDRESS:您將接收消息的電子郵件地址。這是一個我們稍後將創建的自定義設置,用於將所有電子郵件發送到同一收件人。

為了利用這些環境變數,我們需要安裝 Django-environ:

pip install django-environ

注意:確保你的虛擬環境已激活。

現在,打開位於 EmailProject 目錄下的 settings.py 並使用以下代碼:

# EmailProject/settings.py
# 這應該位於文件開頭
import environ

env = environ.Env()
environ.Env.read_env()

# 之前的設置 ...
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = env('EMAIL_HOST')
EMAIL_PORT = 587
EMAIL_USE_TLS = True
EMAIL_HOST_USER = env('EMAIL_HOST_USER')
EMAIL_HOST_PASSWORD = env('EMAIL_HOST_PASSWORD')

# 自定義設置。用於郵件
RECIPIENT_ADDRESS = env('RECIPIENT_ADDRESS')

首先,我們在設置文件的頂部導入 environ 包。請記住,所有導入都應該放在開頭。

接著,我們創建一個 env 變數,它將包含 .env 中所有可用的鍵值對。

env('KEY') 語句意味著我們正在查找該鍵的值。確保在繼續之前已設置好你的 .env 文件,因為如果某些環境變數未設置,你將收到 Django ImproperlyConfigured 錯誤。

注意,RECIPIENT_ADDRESS 是我們將用於向可訪問地址發送電子郵件的自定義設置。

別忘了 如果你使用 Git 和 GitHub,請在 .gitignore 中包含 .env 文件。你只需打開它並添加以下行:

.env

1. 使用Django Shell發送電子郵件

終於來到本文的精彩部分!是時候向Django發送你的第一封電子郵件了。

打開終端,激活虛擬環境,並運行:

python manage.py shell

這將創建一個已經為我們配置好Django設置的shell。在這個全新的shell中,貼上以下代碼:

>>> from django.core.mail import send_mail
>>> from django.conf import settings
>>> send_mail(
...     subject='A cool subject',
...     message='A stunning message',
...     from_email=settings.EMAIL_HOST_USER,
...     recipient_list=[settings.RECIPIENT_ADDRESS])
1

我們也可以不指定參數來實現一行代碼:

>>> send_mail('A cool subject', 'A stunning message', settings.EMAIL_HOST_USER, [settings.RECIPIENT_ADDRESS])
1

讓我們分解上面的代碼:

  • 我們導入了Django的send_mail函數。
  • 然後我們導入了包含所有全局設置和每個站點設置(那些在settings.py文件中的設置)的settings對象。
  • 最後,我們將所有需要的參數傳遞給send_mail函數。該函數返回發送的電子郵件數量,在此例中為1

注意我們是如何使用settings對象來獲取from_email(你用來發送郵件的電子郵件地址)和recipient_list(我們在.env中定義的RECIPIENT_ADDRESS自定義設置)。

現在,如果我檢查我的收件箱——因為我將RECIPIENT_ADDRESS環境變量設置為我的電子郵件地址——我將收到Django發送的消息。

2. 使用Django構建自動化聯繫表單

在本節中,我們將使用Django表單和內置的send_mail函數建立一個自動化的聯絡表單。此外,我們還將在聯絡表單內創建一個自定義函數send(),以便於在視圖中實現。

首先,我們開始創建聯絡應用。進入項目根目錄——即manage.py所在位置——並運行以下命令:

python manage.py startapp contact

接著,在你的EmailProject/settings.py文件中的INSTALLED_APPS變量中安裝它:

# EmailProject/settings.py

INSTALLED_APPS = [
    'django.contrib.admin',
    ...

    # 自定義
    'contact',
]

在繼續進行contact應用之前,讓我們在EmailProject/urls.py文件中配置urlpatterns。為此,導入django.urls.include函數並在整個項目中包含聯絡URL。別擔心,我們稍後會配置聯絡URL:

# EmailProject/urls.py

from django.contrib import admin
from django.urls import path, include # 新導入

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('contact.urls')) # 包含聯絡URL
]

聯絡表單

進入contact應用文件夾並創建一個forms.py文件。在forms.py文件中定義所有表單是一個良好的實踐,但並非強制性。這就是為什麼Django不默認包含此文件的原因。

你可以使用以下命令創建表單文件:

cd ../contact/
# 你已在EmailProject文件夾內
touch forms.py

打開您剛創建的文件,並進行以下導入:

# contact/forms.py
from django import forms
from django.conf import settings
from django.core.mail import send_mail

Django的表單模塊提供了我們創建聯絡表單所需的所有類別和欄位。再次導入settings物件和send_mail函數,以便發送電子郵件。

我們的聯絡表單將包含多個欄位,並使用兩個自定義方法:get_info(),用於格式化用戶提供的資訊,以及send(),用於發送訊息。

讓我們來看看這是如何在代碼中實現的:

# contact/forms.py
class ContactForm(forms.Form):

    name = forms.CharField(max_length=120)
    email = forms.EmailField()
    inquiry = forms.CharField(max_length=70)
    message = forms.CharField(widget=forms.Textarea)

    def get_info(self):
        """
        Method that returns formatted information
        :return: subject, msg
        """
        # 清理後的數據
        cl_data = super().clean()

        name = cl_data.get('name').strip()
        from_email = cl_data.get('email')
        subject = cl_data.get('inquiry')

        msg = f'{name} with email {from_email} said:'
        msg += f'\n"{subject}"\n\n'
        msg += cl_data.get('message')

        return subject, msg

    def send(self):

        subject, msg = self.get_info()

        send_mail(
            subject=subject,
            message=msg,
            from_email=settings.EMAIL_HOST_USER,
            recipient_list=[settings.RECIPIENT_ADDRESS]
        )

這是一個很大的類別,所以我們來分解一下每個部分的內容。首先,我們定義了四個必填欄位,用於發送訊息:

  • nameenquiry字符字段,代表聯絡訊息的名稱和原因。
  • email是一個電子郵件字段,代表試圖聯絡您的個人的電子郵件。需要注意的是,電子郵件不會從用戶的電子郵件地址發送,而是從您在Django項目中設置的電子郵件地址發送。
  • message 是另一個 CharField,但不同的是我們使用了 Textarea 小部件。這意味著當展示表單時,它將渲染一個 <textarea> 標籤,而不是簡單的 <input>

進入自定義方法,我們僅使用 get_info 方法來格式化用戶提供的信息,並返回兩個變量:subject,僅僅是 inquiry 字段,以及 message,這將是 Django 發送的實際消息。

另一方面,send() 方法僅從 get_info 獲取格式化的信息,並使用 send_mail 函數發送消息。

儘管這部分相當龐大,但您將看到我們如何通過將所有發送邏輯實現到 ContactForm 本身來簡化聯繫視圖。

聯繫視圖

打開 contact/views.py 文件並添加以下導入:

# contact/views.py
from django.views.generic import FormView, TemplateView
from .forms import ContactForm
from django.urls import reverse_lazy

如您所見,我們將使用 Django 通用視圖,這在進行簡單任務時節省了我們大量時間——例如,當使用 FormView 設置表單或使用 TemplateView 創建僅渲染模板的視圖時。

此外,我們正在導入上一節中建立的ContactForm以及在處理基於類別的視圖時使用的reverse_lazy函數。

繼續討論視圖,讓我們撰寫ContactView

# contact/views.py

class ContactView(FormView):
    template_name = 'contact/contact.html'
    form_class = ContactForm
    success_url = reverse_lazy('contact:success')

    def form_valid(self, form):
        # 調用自定義的send方法
        form.send()
        return super().form_valid(form)

如您所見,我們正在使用我們創建的ContactForm建立一個簡單的FormView。我們還正在設置template_namesuccess_url。稍後我們將編寫HTML模板並設置URL。

通過表單有效方法,我們可以使用ContactForm.send()方法發送電子郵件,前提是表單中的所有字段均有效。這意味著如果用戶輸入無效的輸入(例如未格式化的電子郵件地址),則不會發送消息。

上述form_valid方法的實現在功能視圖中將等同於以下內容:

# 先前的基於函數的contact_view ...

if request.method == 'POST':
    form = ContactForm(request.POST)
    if form.is_valid():
        form.send()
        return redirect('contact:success')
else:
    form = ContactForm())

本節結束時,我們將編寫一個ContactSuccessView,向用戶顯示成功消息。由於我們已經導入了TemplateView類,因此只需繼承它並定義template_name屬性:

# contact/views.py
class ContactSuccessView(TemplateView):
    template_name = 'contact/success.html'

如有任何疑問,您可以查看GitHub倉庫中的views.py文件。

聯繫URL

現在是時候創建contact應用的URL模式了。由於Django不會默認提供urls.py文件,我們需要使用以下命令創建它(確保位於contact應用文件夾內):

pwd
# /path/to/project/EmailProject/contact
touch urls.py

打開該文件並設置app_nameurlpatterns變量:

from django.urls import path
from .views import ContactView, ContactSuccessView

app_name = 'contact'

urlpatterns = [
    path('', ContactView.as_view(), name="contact"),
    path('success/', ContactSuccessView.as_view(), name="success"),
]

我們使用path將路由及其對應的視圖包含到應用的URL配置中。當我們將app_name變量設置為'contact'時,意味著應用的URL命名空間將如下所示:

contact:name_of_path
# 對於ContactView
contact:contact
# 對於ContactSuccessView
contact:success

注意:在Django模板和視圖中,命名空間是我們動態調用URL的方式。

您可以透過官方文件深入了解Django的URL調度器。

編寫模板

Django模板是用於動態顯示數據的首選方式,利用HTML以及Django模板語言提供的特殊標籤。

對於此特定應用,我們將使用三個模板:

  • base.html:其他所有模板都將繼承自此模板。它將包含所有模板必備的HTML骨架,以及指向Bootstrap的連結。
  • contact.html:展示聯絡表單。
  • success.html:展示成功訊息。

讓我們開始創建聯絡應用的模板結構(確保您位於聯絡應用文件夾內):

mkdir -p templates/contact/
cd templates/contact
touch base.html contact.html success.html

上述命令創建了一個可重用Django應用的典型模板結構——appname/templates/appname——以及我之前提到的三個樹狀模板文件。

以下是應用文件結構現在應該呈現的樣子:

.
├── admin.py
├── apps.py
├── forms.py
├── __init__.py
├── migrations
│   └── __init__.py
├── models.py
├── templates
│   └── contact
│       ├── base.html
│       ├── contact.html
│       └── success.html
├── tests.py
├── urls.py
└── views.py

接下來,我們深入探討base.html模板內容:

<!-- contact/templates/contact/base.html -->

<!DOCTYPE html>
<html lang="en">

  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Django Email Send</title>
    <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet"
      integrity="sha384-wEmeIV1mKuiNpC+IOBjI7aAzPcEZeedi5yW5f2yOq55WWLwNGmvvx4Um1vskeMj0" crossorigin="anonymous" />
  </head>

  <body>
    {% block body %}

    {% endblock %}
    <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js"
      integrity="sha384-p34f1UUtsS3wqzfto5wAAmdvj+osOnFyQFpp4Ua3gs/ZVWx6oOypYoCJhGGScy+8" crossorigin="anonymous">
    </script>
  </body>

</html>

如您所見,這是一個簡單的HTML文件骨架,包含對Bootstrap 5的連結。這使我們能夠對聯絡應用進行風格化,而無需使用CSS文件。

標籤{% block name-of-block %}允許我們設置一個“子模板”將利用的佔位符。使用此標籤使得模板繼承變得容易。

在進入表單之前,您需要安裝Django crispy forms包,這使我們能夠輕鬆地對其進行風格化:

pip install django-crispy-forms

再次,crispy_forms是一個Django應用,我們需要在INSTALLED_APPS列表中包含它:

# config/settings.py

INSTALLED_APPS = [
    ...

    # 第三方應用
    'crispy_forms',

    # 自定義應用
    'contact',
]

# 指示Django crispy forms使用的前端框架
CRISPY_TEMPLATE_PACK = 'bootstrap4'

我們使用Bootstrap 4的模板包,因為在撰寫本文時,Bootstrap表單類在第4版和第5版之間兼容。

現在,讓我們來處理contact.html模板:

<!-- contact/templates/contact/contact.html -->

{% extends 'contact/base.html' %}
{% load crispy_forms_tags %}

{% block body %}
<div class="mx-auto my-4 text-center">
    <h1>Contact Us</h1>
</div>
<div class="container">
    <form action="" method="post">
        {% csrf_token %}
        {{ form | crispy }}
    <button class="btn btn-success my-3" type="submit">Send message</button>
    </form>
</div>
{% endblock %}

注意我們如何擴展基礎模板並利用了區塊佔位符。這正是Django模板語言高效的原因,因為它讓我們避免了大量HTML的複製粘貼。

談到表單,我們使用了"post"方法,意味著ContactView將處理用戶提供的數據,如果表單有效,則發送郵件。

每個表單中必須包含{% csrf_token %},這是出於安全考慮。Django文檔中有一個專門介紹CSRF令牌的頁面,以及在使用表單時使用它們的原因。

我們將使用crispy模板標籤來渲染表單,這就是為什麼我們用{% load crispy_forms_tags %}載入了crispy標籤。

最後,讓我們編寫success.html模板:

{% extends 'contact/base.html' %}

{% block body %}
<div class="mx-auto my-4 text-center">
    <h1 class="fw-bolder text-success">We sent your message</h1>
    <p class="my-5">You can send another in the <a href="{% url 'contact:contact' %}">contact page</a></p>
</div>
{% endblock %}

如您所見,這是一個簡單的成功通知,其中包含一個鏈接到聯繫表單的鏈接,以防用戶想要再次發送消息。

再次運行服務器並訪問http://localhost:8000(確保您已激活.venv並位於項目根目錄中):

python manage.py runserver

下圖展示了最終的聯繫表單外觀。

這是成功消息的圖片。

這是收件箱中郵件的圖片。

總結

恭喜!你已經學會了如何使用Django發送電子郵件以及如何建立Django聯絡表單。

使用Django發送電子郵件有多種方法。在本教程中,你使用了個人電子郵件地址,但我鼓勵你探索其他工具並將其整合到你的項目中。

在本教程中,我們涵蓋了以下內容:

  • 如何設置Django設定以發送電子郵件
  • 如何使用個人電子郵件帳戶在小型項目中發送電子郵件
  • 如何使用.env文件在Django項目中使用敏感數據
  • 如何建立自動化的聯絡表單

更多關於Django的資訊,請查看“使用Django建立照片分享應用”。

關於如何使用Django發送電子郵件的常見問題

我可以在Django中發送電子郵件嗎?

是的,你可以在Django應用程序中發送電子郵件。Django提供了一個內置的電子郵件發送框架,使得發送電子郵件相對容易。

如何在Django中發送電子郵件?

如上述文章所述,首先在Django專案的settings.py檔案中配置您的電郵設定。您需要指定SMTP伺服器的詳細資訊和驗證憑證。配置好電郵設定後,您可以從Django的視圖或函數中建立並發送電郵。您可以使用django.core.mail中的send_mail函數。

對於包含HTML內容的更複雜電郵,您可以利用Django的模板系統來創建電郵模板。這允許您生成格式豐富的電郵。您可以使用EmailMessage類別在電郵中包含HTML內容。如果尚未執行,請不要忘記運行python manage.py migrate以創建發送電郵所需的必要資料庫表。

如何在Django中發送Outlook郵件?

要在Django中發送Outlook郵件,您可以使用Django的電郵發送功能結合Outlook的SMTP設定。在您的Django專案的settings.py檔案中,配置Outlook的SMTP設定。這些設定將使Django能夠連接到Outlook的SMTP伺服器以發送電郵。

如何在Django中接收電郵?

在您的 Django 專案的 settings.py 中,配置您的收件郵件伺服器設定。您通常需要您的郵件提供商的 IMAP(Internet Message Access Protocol)伺服器詳細資訊,以及認證憑證。接著,使用 imaplib 庫來連接到您的郵件伺服器並擷取電子郵件。您可以在 Django 視圖或自定義管理命令中執行此操作。一旦您擷取了電子郵件,您可以處理它,提取資訊,並在您的 Django 應用程式中執行任何需要的操作。這可能涉及解析電子郵件內容,將相關數據存儲在您的資料庫中,或根據電子郵件的內容或發件人觸發特定操作。

Source:
https://www.sitepoint.com/django-send-email/