首頁 > 科技週邊 > IT業界 > 如何使用SMTP服務器向Django發送電子郵件

如何使用SMTP服務器向Django發送電子郵件

尊渡假赌尊渡假赌尊渡假赌
發布: 2025-02-08 10:58:10
原創
562 人瀏覽過

如何使用SMTP服務器向Django發送電子郵件

您是否曾經在Django項目中設置電子郵件集成方面曾努力?無論是配置SMTP設置,處理安全問題還是自動聯繫表格,電子郵件功能對於用戶參與和信任至關重要。

>

在本教程中,我們將介紹如何使用Django使用DJANGO進行實用,分步說明。我們將介紹如何配置Django SMTP連接,如何為您的電子郵件提供商設置密碼以及如何通過Django Shell發送電子郵件。我們還將查看如何為您的Django應用程序設置聯繫表格,這將使您的客戶可以與您聯繫。

鑰匙要點

    配置SMTP設置:設置DJANGO電子郵件通過配置設置。 Py文件中使用適當的電子郵件後端,主機,端口和安全設置(例如TLS)。
  • >使用Django Environ:使用Django Environ來管理敏感憑據,例如email_host_user和email_host_pass_password,通過環境變量安全地管理敏感憑據,以防止源代碼中的憑據。
  • 生成特定於應用程序的密碼:使用Gmail時,啟用2步驗證並創建一個應用程序密碼以安全身份驗證DJANGO郵件發送而不是依靠您的主密碼。
  • >
  • >使用send_mail發送電子郵件:使用DJANGO的內置send_mail函數將電子郵件從django shell,視圖或可重複使用的輔助輔助函數中發送給Django,並利用設置用於簡化的配置。
  • >
  • >實施自動聯繫表格:使用Django表格構建自動聯繫表格,並集成電子郵件訂單功能以無縫處理用戶查詢。
  • >
  • 測試電子郵件功能:使用單位測試驗證電子郵件訂閱邏輯,並使用MailHog或Console Email Backend等工具進行安全開發測試。
  • 遵循最佳實踐:通過使用TLS加密,適當的身份驗證和模塊化電子郵件功能確保安全有效的電子郵件交付以可重複使用。
  • 大多數Web應用程序都使用電子郵件來管理關鍵操作,例如重置密碼,帳戶激活,接收客戶反饋,發送新聞通訊和營銷活動。當Gmail用於測試或小型項目時,生產網站應使用專用的電子郵件服務,例如AWS SES,SendGrid或MailGun。 但是,如果您比較使用專用電子郵件服務的成本和努力,則與您的個人電子郵件一起發送電子郵件對於小型或測試項目可能更合理。因此,我們將在此處採用這種方法來保持簡單。

> NOTE

>:為您的生產網站使用您的個人電子郵件服務不是一個好主意。您可以了解有關

gmail發送限制的更多信息,或者參考電子郵件提供商的局限

注意:本教程的完整代碼可在GitHub上找到。

>

了解SMTP服務器和簡單的郵件傳輸協議

> SMTP(或簡單的郵件傳輸協議)是確定如何從發件人傳輸到收件人的一組規則。 SMTP服務器使用此協議發送和繼電器傳出電子郵件。 (請注意,其他協議控制電子郵件的收到>。 > SMTP服務器始終具有發送消息的唯一地址和一個特定端口,在大多數情況下是587。我們將在Django電子郵件發送中查看該端口的相關。

在此示例中,我們將使用Gmail的SMTP服務器,其中:>

地址:smtp.gmail.com

端口:587
  • 現在,讓我們看看如何與django發送電子郵件。
  • >
  • 創建一個django項目

>每個Django項目都應該具有虛擬環境,因為我們不想弄亂項目依賴項。要創建一個,請運行以下內容:

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

python <span>-m venv .venv</span>
登入後複製
登入後複製
登入後複製
登入後複製
登入後複製
登入後複製
登入後複製
登入後複製
登入後複製
python虛擬環境指南

>上面的命令創建了一個具有名稱.venv的虛擬環境。要激活此虛擬環境,您可以使用以下內容:> >由於Django是第三方包,您必須使用PIP安裝它:>

這將安裝最新版本的Django,您可以使用PIP凍結檢查。 >

要創建一個Django項目,您可以調用命令行實用程序Django-admin:

<span># CMD
</span>.venv<span>\Scripts\activate
</span>
<span># Power Shell
</span>.venv<span>\Scripts\Activate.ps1
</span>
<span># WSL
</span><span>source .venv/bin/activate</span>
登入後複製
登入後複製
登入後複製
登入後複製
登入後複製
登入後複製
登入後複製
登入後複製

>使用上面的命令,您正在創建一個帶有emailProject的Django項目,但是您可以使用任何想要的名稱創建項目。現在,輸入到項目目錄並運行服務器:

pip <span>install django</span>
登入後複製
登入後複製
登入後複製
登入後複製
登入後複製
登入後複製
登入後複製

運行Django服務器後,請訪問http:// localhost:8000在您的瀏覽器中。您會看到一個帶有最新Django發行說明的自動生成頁面。
django-admin startproject EmailProject
登入後複製
登入後複製
登入後複製
登入後複製
登入後複製

<span>cd EmailProject
</span>python manage.py runserver
登入後複製
登入後複製
登入後複製
登入後複製
>配置DJANGO電子郵件後端為SMTP
如何使用SMTP服務器向Django發送電子郵件電子郵件後端是與Django發送電子郵件的機制。默認情況下,django使用django.core.mail.backends.smtp.emailbackend,它允許其連接到SMTP服務器並發送電子郵件。根據環境(開發或生產),您可以選擇其他電子郵件後端以適合您的需求。
>

>在發送電子郵件之前,您需要修改設置文件,因此,讓我們使用以下命令找到該文件:>

>
注意:為簡單起見,我們將僅使用unix(macOS或linux)系統命令。
python <span>-m venv .venv</span>
登入後複製
登入後複製
登入後複製
登入後複製
登入後複製
登入後複製
登入後複製
登入後複製
登入後複製

樹命令輸出目錄的文件結構。在這種情況下,由於我們沒有給它一個特定的目錄路徑,因此,如果我們在項目的根文件夾中,我們將獲得類似的內容:>

<span># CMD
</span>.venv<span>\Scripts\activate
</span>
<span># Power Shell
</span>.venv<span>\Scripts\Activate.ps1
</span>
<span># WSL
</span><span>source .venv/bin/activate</span>
登入後複製
登入後複製
登入後複製
登入後複製
登入後複製
登入後複製
登入後複製
登入後複製
我們將在本教程中不斷修改的文件是EmailProject文件夾中的設置。它持有您需要的所有項目配置,並允許您設置自定義變量。正如Django文檔所說,“設置文件只是具有模塊級變量的Python模塊”。

>讓我們看一下與Django發送電子郵件所需的設置。打開emailProject/settings.py文件並將以下設置粘貼到文件底部:>

>讓我們通過分析這些設置中的每一個來分解上述代碼。 >

>電子郵件後端
pip <span>install django</span>
登入後複製
登入後複製
登入後複製
登入後複製
登入後複製
登入後複製
登入後複製

email_backend設置聲明後端我們的django項目將用於與SMTP服務器連接。 >

這個變量指向SMTP.EmailBackend類,該類接收發送電子郵件所需的所有參數。我強烈建議您直接在Django源代碼上查看類構造函數。您會對此代碼的可讀性感到驚訝。

>

>

注意:儘管此類是默認的email_backend,但在DJANGO設置中被認為是一個好習慣。

>所有其他電子郵件設置將基於此Emailbackend類的構造函數。

>電子郵件主機 > email_host設置是指您將使用的SMTP服務器域。這取決於您的電子郵件提供商。下面是一張帶有SMTP服務器主機的表,該表與三個普通提供商相對應:>

電子郵件提供者

smtp Server主機

gmailsmtp.gmail.com.outlook/hotmailsmtp-mail.outlook.utlook.comyahoosmtp.mail.yahoo.com

>我們現在將此設置留為空白,因為我們稍後將使用.ENV文件以避免使用硬編碼的敏感鍵或每個站點配置。您切勿將憑據直接設置為代碼。我們將使用Django Environ來解決此問題。
>電子郵件端口 > email_port設置必須設置為587,因為它是大多數SMTP服務器的默認端口。個人電子郵件提供商仍然如此。該端口與TLS加密一起使用,以確保發送電子郵件的安全性。 > 電子郵件使用tls

>傳輸層安全性(TLS)是在網絡上使用的安全協議,用於加密Web應用程序(DJANGO)和服務器(SMTP服務器)之間的通信。

最初,我們將email_use_tls變量設置為trui。這意味著Django將使用傳輸層安全性連接到SMTP服務器並發送電子郵件。 (對於個人電子郵件提供商來說,這是必須的。)

>電子郵件主機用戶

> email_host_user設置是您的個人電子郵件地址。現在將其留為空白,因為我們將使用django-environ來設置所有這些憑據。

電子郵件主機密碼

> email_host_password設置是您從電子郵件帳戶中獲取的應用程序密碼 - 本節之後我們將要進行的過程。同樣的故事:將此設置留為空白,因為我們以後將使用環境變量。

> 對於其他提供商,您可以相應地調整設置。例如:

> Outlook配置:

python <span>-m venv .venv</span>
登入後複製
登入後複製
登入後複製
登入後複製
登入後複製
登入後複製
登入後複製
登入後複製
登入後複製
> yahoo配置:

<span># CMD
</span>.venv<span>\Scripts\activate
</span>
<span># Power Shell
</span>.venv<span>\Scripts\Activate.ps1
</span>
<span># WSL
</span><span>source .venv/bin/activate</span>
登入後複製
登入後複製
登入後複製
登入後複製
登入後複製
登入後複製
登入後複製
登入後複製
>使用應用程序密碼設置Gmail SMTP服務器

>由於Google將“較不安全的應用程序”棄用,因此連接到Gmail帳戶發送電子郵件的正確和安全方法是使用應用程序密碼。僅當您為Google帳戶啟用2步驗證時,應用程序密碼才能可用。

>

為什麼使用應用程序密碼?

>

安全替代方案:App密碼不是共享主密碼,而是為特定應用程序提供有限的訪問。 >
    >使用SMTP:APP密碼符合Gmail的SMTP訪問的安全要求。
  1. 2步驗證的強制性:一旦啟用了兩步驗證,應用程序是允許外部應用程序連接的唯一方法。
  2. >
  3. >步驟1:啟用2步驗證
訪問您的Google帳戶:https://myaccount.google.com/。

導航到左側菜單中的安全性。
  1. >滾動到“您如何登錄Google”部分。
  2. >
  3. >單擊“ 2步驗證”,然後按照屏幕上的說明進行操作:
  4. 使用您的電話號碼或身份驗證器應用程序來設置2步驗證。
  5. >用發送到設備的代碼驗證您的設置。
  6. 步驟2:生成一個應用程序密碼
如何使用SMTP服務器向Django發送電子郵件>啟用了2步驗證後,在搜索欄中搜索“應用程序密碼”。

在那裡,輸入應用程序密碼的名稱,然後單擊“創建”。

  1. 然後,它將通過16個字符的應用程序密碼提供一個彈出模式。確保將其保存在某個地方,因為它只會顯示一次。
>
如何使用SMTP服務器向Django發送電子郵件
  1. 如果您使用的是其他電子郵件提供商,請確保閱讀以下指南:>
    • > Yahoo App密碼
    • Outlook或Hotmail App密碼

    使用Django Environ來保護電子郵件後端憑據

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

    >讓我們看看如何使用django-environ。

    >在emailProject目錄中創建一個.env文件(wertings.py文件所在的位置),其中命令以下:>

    現在,打開該.ENV文件並輸入以下鍵 - 值對:>
    python <span>-m venv .venv</span>
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    登入後複製

    分解此文件的內容:

    <span># CMD
    </span>.venv<span>\Scripts\activate
    </span>
    <span># Power Shell
    </span>.venv<span>\Scripts\Activate.ps1
    </span>
    <span># WSL
    </span><span>source .venv/bin/activate</span>
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    登入後複製

    > email_host:您的電子郵件提供商的SMTP服務器地址。請參閱上面的電子郵件主機表以獲取快速指導。在這種情況下,我正在使用smtp.gmail.com,gmail smtp地址。

    > email_host_user:您的電子郵件地址。
    • > email_host_password:您剛剛生成的應用程序密碼。請記住,它不包含任何空間。
    • > coverient_address:您將收到消息的電子郵件地址。這是一個自定義設置,我們以後將創建,將所有電子郵件發送給同一收件人。
    • 要利用這些環境變量,我們需要安裝Django-environ:
    注意:確保您的虛擬環境已激活。

    >
    pip <span>install django</span>
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    現在,打開位於emailProject目錄中的設置。

    首先,我們在設置文件的頂部導入環境包。請記住,所有進口都應該在開始。然後,我們創建一個Env變量,該變量將包含.env。 > env('鍵')語句意味著我們正在查找該密鑰的價值。在進行之前,請確保已設置.ENV文件。否則,如果未設置某些環境變量,您將獲得DJANGO不正確配置的錯誤。

    >

    >

    注意:conferient_address是一種自定義設置,我們將使用該設置將電子郵件發送到我們可以訪問的地址。
    django-admin startproject EmailProject
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    登入後複製

    如果您使用git和github,請不要忘記將.env文件包含在.gitignore中。您可以通過打開並添加以下行來執行此操作:

    >

    1。與Django Shell 一起發送電子郵件 >最後,我們進入了文章的多汁部分!是時候將您的第一封電子郵件發送到Django了。

    >

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

    <span>cd EmailProject
    </span>python manage.py runserver
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    >這將創建一個已經為我們配置的所有Django設置創建一個外殼。在那個全新的外殼中,粘貼以下代碼:

    >

    我們還可以在不指定參數的情況下進行單線工作:>

    python <span>-m venv .venv</span>
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    登入後複製

    讓我們分解上面的代碼:

    • 我們導入django send_mail函數。
    • 然後,我們導入包含所有全局設置和每個站點設置的設置對象(settings.py文件中的這些對象)。
    • >最後,我們將所有所需的參數傳遞給send_mail函數。此函數返回在這種情況下發送的電子郵件數量1.
    • >請注意我們如何使用設置對象獲取From_email(您發送電子郵件的電子郵件)和conterient_list(我們在.ENV中定義的conferient_address自定義設置)。
    >

    現在,如果我檢查收件箱 - 當我將收件人_address環境變量設置為電子郵件地址時,我將獲得Django發送的電子郵件。

    >

    如何使用SMTP服務器向Django發送電子郵件>異步電子郵件發送
    在Django 4.x中,支持異步電子郵件發送以提高性能。這對於高流量網站或發送批量電子郵件時很有用。

    >

    這是您可以異步發送電子郵件的方法:

    >

    >異步電子郵件發送在以下情況下很有用:

    >
    <span># CMD
    </span>.venv<span>\Scripts\activate
    </span>
    <span># Power Shell
    </span>.venv<span>\Scripts\Activate.ps1
    </span>
    <span># WSL
    </span><span>source .venv/bin/activate</span>
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    登入後複製

    >非阻止操作,發送電子郵件不應延遲用戶請求。 >

    >發送批量電子郵件(使用芹菜等任務隊列進行生產規模任務)。
    • 注意:雖然Django支持異步電子郵件,但對於生產規模的批量電子郵件,請使用諸如芹菜或Django-Q之類的背景任務隊列進行真正的非阻止操作。
    • >
    • 2。使用Django
    構建自動觸點表格

    >在本節中,我們將使用Django表單和內置的send_mail函數構建自動聯繫表格。我們還將在聯繫表格中創建一個自定義函數,send(),以便在視圖中更容易實現。

    >讓我們從創建聯繫應用程序開始。輸入項目根目錄(Manage.py所在的位置)並運行:

    >

    然後,在emailProject/settings.py文件中將其安裝在您的installed_apps變量中

    >在使用聯繫人應用程序前進之前,讓我們配置emailProject/urls.py文件內部的urlpatterns。為此,請導入django.urls.include函數,並在整個項目中包含聯繫URL。不用擔心;我們稍後將配置聯繫URL:

    pip <span>install django</span>
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    登入後複製

    觸點表格

    django-admin startproject EmailProject
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    >輸入聯繫人應用程序文件夾並創建一個forms.py文件。最好在forms.py文件中定義您的所有表格,這是一個很好的做法,但這不是強制性的。這就是為什麼Django默認不包含此文件的原因。您可以使用以下命令來創建表單文件:>

    打開您剛創建的文件,並進行以下導入:>
    python <span>-m venv .venv</span>
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    登入後複製

    > django表單模塊為我們提供了創建我們的聯繫表格的所有必要類和字段。我們再次導入設置對象和send_mail函數以發送電子郵件。

    >

    我們的聯繫表將包含幾個字段,並使用兩種自定義方法:get_info(),該方法格式化了用戶提供的信息,並發送()將發送電子郵件。讓我們看看這是在代碼中實現的:

    <span># CMD
    </span>.venv<span>\Scripts\activate
    </span>
    <span># Power Shell
    </span>.venv<span>\Scripts\Activate.ps1
    </span>
    <span># WSL
    </span><span>source .venv/bin/activate</span>
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    登入後複製

    這個課程很大,所以讓我們分解每個部分的工作。首先,我們定義了發送電子郵件的四個字段:

    >
    • >名稱和查詢是Charfields,代表聯繫消息的名稱和原因。
    • 電子郵件是一個電子郵件場,代表試圖與您聯繫的人的電子郵件地址。請注意,該電子郵件不會由用戶的電子郵件地址發送,而是通過您設置的電子郵件地址發送的電子郵件地址。
    • 郵件是另一個Charfield,除了我們使用的是Textarea小部件。這意味著,在顯示表單時,它將呈現a
    • >進入自定義方法,我們僅使用get_info方法來格式化用戶的信息並返回兩個變量:主題,這是詢問字段和消息,這將是Django發送的實際電子郵件消息。
    • 另一方面,send()方法僅從get_info獲取格式化的信息,並使用send_mail函數發送消息。儘管本節很大,但是您會看到我們如何通過將所有發送邏輯實現到ContactForm本身來簡化聯繫人視圖。
    >

    聯繫人視圖

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

    如您所見,我們將使用django通用視圖,這在製作簡單任務時節省了我們大量的時間 - 例如,在設置具有FormView的表單或創建僅呈現模板的視圖時templateView。

    >另外,我們正在導入上一節中構建的聯繫人和使用

    基於類的視圖

    時使用的reverse_lazy函數。繼續視圖,讓我們寫下ContactView:
    pip <span>install django</span>
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    >

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

    表單有效方法讓我們僅在表單的所有字段都是有效的情況下,使用ContactForm.Send()方法發送電子郵件。這意味著,如果用戶輸入無效輸入(例如未格式化的電子郵件地址),則不會發送消息。

    > 上述form_valid方法實現在基於函數的視圖中等效於以下內容:

    python <span>-m venv .venv</span>
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    登入後複製

    >結束本節,我們將編寫ContactSucessView,該ContactSucessView將向用戶顯示成功消息。由於我們已經導入了TemplateView類,因此我們只需要從中繼承並定義Template_name屬性:

    >
    <span># CMD
    </span>.venv<span>\Scripts\activate
    </span>
    <span># Power Shell
    </span>.venv<span>\Scripts\Activate.ps1
    </span>
    <span># WSL
    </span><span>source .venv/bin/activate</span>
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    登入後複製

    >您可以在GitHub存儲庫上查看views.py文件,如果您有任何疑問。

    聯繫URL

    是時候創建聯繫應用程序的URL模式了。由於django默認不給我們提供urls.py文件,因此我們需要使用以下命令來創建它(請確保在Contact App文件夾中):>

    pip <span>install django</span>
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    打開該文件並設置app_name和urlpatterns變量:

    django-admin startproject EmailProject
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    >我們使用路徑將路由及其通訊視圖包括在應用程序的URL配置中。當我們將app_name變量設置為“聯繫”時,這意味著該應用程序的URL

    > >

    注意:一個名稱空間是我們在django模板和視圖中動態地稱為url。
    <span>cd EmailProject
    </span>python manage.py runserver
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    >您可以在官方文檔中了解有關Django URL調度程序的更多信息。

    > >寫模板

    > django模板是使用django模板語言提供的HTML和特殊標籤動態顯示數據的首選方法。

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

    >

    base.html:所有其他模板都將從它繼承。它將包含所有模板必須具有的HTML骨架,以及鏈接到Bootstrap。

    contact.html:顯示觸點表格。

    success.html:顯示成功消息。
    • >讓我們首先創建聯繫人的應用模板結構(請確保您在聯繫人應用程序文件夾中):
    • 上面的命令創建可重複使用的django應用程序的典型模板結構 - appName/applates/appname-以及我之前提到的樹模板文件。以下是應用程序文件結構現在應該看起來像:

    >讓我們跳入base.html模板的內容:

    如您所見,這是HTML文件的簡單骨架,其中包含Bootstrap 5的鏈接。這使我們可以在不使用CSS文件的情況下對聯繫人應用進行樣式化。 {%塊block of-block%}標籤使我們能夠設置“子模板”將使用的佔位符。此標籤的使用使模板繼承是一個容易的任務。
    tree
    登入後複製
    登入後複製

    >在進入表格之前,您需要安裝Django脆皮表套件,這使我們可以輕鬆地對它們進行樣式化:

    >
    ├── EmailProject
    │   ├── asgi.py
    │   ├── __init__.py
    │   ├── settings.py
    │   ├── urls.py
    │   └── wsgi.py
    └── manage.py
    
    1 directory, 6 files
    登入後複製

    再次,crispy_forms是一個django應用,我們需要將其包含在installed_apps列表中:

    <span># EmailProject/settings.py
    </span>
    <span># Bottom of the file
    </span>EMAIL_BACKEND <span>= 'django.core.mail.backends.smtp.EmailBackend'
    </span>EMAIL_HOST <span>= ''
    </span>EMAIL_PORT <span>= 587
    </span>EMAIL_USE_TLS <span>= True
    </span>EMAIL_HOST_USER <span>= ''
    </span>EMAIL_HOST_PASSWORD <span>= ''
    </span>
    登入後複製

    我們使用Bootstrap 4的模板包,因為Bootstrap表格類是第四版和第五版之間的兼容(在寫作時)。

    >

    現在,讓我們使用Contact.html模板:

    python <span>-m venv .venv</span>
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    請注意我們如何擴展基本模板並利用塊佔位符。這就是使Django模板語言如此高效的原因,因為它使我們可以節省大量的HTML複製和粘貼。

    >

    >談論表格,我們使用的是“帖子”,這意味著我們的ContactView將處理用戶給出的數據,並在表格有效時發送電子郵件。由於安全原因,{%csrf_token%}是必不可少的。 Django的文檔在CSRF代幣上有一個專用頁面,並且在使用表格時使用它們的原因。

    我們將使用脆皮模板標籤呈現表單,這就是為什麼我們用{%load load Crispy_forms_tags%}加載脆皮標籤的原因。

    >

    最後,讓我們寫下成功。

    如您所見,這是一個簡單的成功公告,並具有指向聯繫表格的鏈接,以防用戶要發送另一個消息。

    >讓我們再次運行服務器並訪問http:// localhost:8000(請確保已激活.venv,並且您在項目root文件夾中):>

    <span># CMD
    </span>.venv<span>\Scripts\activate
    </span>
    <span># Power Shell
    </span>.venv<span>\Scripts\Activate.ps1
    </span>
    <span># WSL
    </span><span>source .venv/bin/activate</span>
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    下圖顯示了最終觸點表格的外觀。

    pip <span>install django</span>
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    這是成功消息的圖像。

    如何使用SMTP服務器向Django發送電子郵件
    >這是收件箱中電子郵件的圖像。

    >

    如何使用SMTP服務器向Django發送電子郵件
    >關注

    的最佳實踐

    1。可重複使用的電子郵件發送功能
    如何使用SMTP服務器向Django發送電子郵件>使您的電子郵件訂閱邏輯模塊化和可重複使用,您可以將電子郵件發送功能移動到輔助功能:>

    >現在,您可以在需要發送電子郵件(包括您的聯繫表格)的任何地方調用此功能。 >

    2。單元測試

    您可以使用django.test進行測試發送電子郵件django功能。

    django-admin startproject EmailProject
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    3。發送豐富的HTML電子郵件

    HTML電子郵件提供更好的設計和演示文稿。使用Django的模板引擎來創建豐富的電子郵件內容:

    4。集成第三方電子郵件服務

    >用於生產就緒的應用程序,請考慮使用SendGrid,MailGun或AWS SES等第三方服務。這些服務提供了高級功能,例如電子郵件分析,交貨跟踪和垃圾郵件過濾。 >
    <span>cd EmailProject
    </span>python manage.py runserver
    登入後複製
    登入後複製
    登入後複製
    登入後複製

    5。用戶註冊中的電子郵件驗證

    >在用戶註冊期間發送電子郵件驗證鏈接以防止垃圾郵件帳戶。

    tree
    登入後複製
    登入後複製
    總結

    恭喜!您已經學會瞭如何與Django一起發送電子郵件以及如何構建Django聯繫表。

    有很多方法可以與Django發送電子郵件。在本教程中,您已經與您的個人電子郵件地址一起完成了,但是我希望您探索其他工具並將其集成到您的項目中。

    >

    在本教程中,我們介紹了以下內容:

    >
    • >如何設置Django設置以提供電子郵件
    • >如何使用個人電子郵件帳戶在小型項目中發送電子郵件
    • >如何使用.ENV文件在Django項目中使用敏感數據
    • 如何構建自動聯繫表格
    • 有關Django的更多信息,請查看“使用django構建照片共享應用”。
    DJANGO上的FAQS

    使用SMTP服務器發送電子郵件

    我可以發送django的電子郵件嗎?

    是的,Django提供了一個內置的電子郵件待發送框架,該框架使發送電子郵件變得容易。通過在設置中配置SMTP設置。 Py文件,您可以使用send_mail函數或emailmessage類發送電子郵件。

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

    >

    >配置DJANGO發送電子郵件:>

    >在您的設置中設置SMTP詳細信息。 Py文件:email_backend ='django.core.core.mail.backends.smtp.emailbackend'email_host ='smtp.gmail.com'smtp.gmail.com'email_port = 587 email_use_use_use_use_use_use_use_use_use_use_use_host_host_host_host_user = .com'email_host_password ='your_app_password'

    如果您使用Gmail或類似的提供商,請使用安全密碼而不是主電子郵件密碼。
      >
    • 用於生產,請考慮使用SendGrid,MailGun或Amazon SES等第三方服務以獲得更好的可伸縮性。
    • >如何在django中發送Outlook郵件?
    • >要在Django發送Outlook Mail,您可以將Django的電子郵件發送功能與SMTP設置進行Outlook。在您的django project的settings.py文件中,為Outlook配置SMTP設置。這些設置將使Django能夠連接到Outlook SMTP服務器發送電子郵件。
    • 如何在Django中接收電子郵件? 在您的Django Project的設置中,
    >配置您的傳入電子郵件服務器設置。通常,您需要電子郵件提供商的IMAP(Internet消息訪問協議)服務器詳細信息以及身份驗證憑據。接下來,使用iMaplib庫連接到您的電子郵件服務器並檢索電子郵件。您可以在Django視圖或自定義管理命令中執行此操作。獲取電子郵件後,您可以在Django應用程序中進行處理,提取信息並執行任何必要的操作。這可能涉及解析電子郵件內容,將相關數據存儲在數據庫中,或者基於電子郵件的內容或發件人觸發特定操作。

    >

    我如何在不發送真實電子郵件的情況下測試發送django的電子郵件?

    > 在開發過程中,您可以使用可選的電子郵件後端來測試電子郵件,而無需連接到真正的SMTP服務器。例如:Console電子郵件後端:將電子郵件打印到終端而不是發送它們。

    >
    python <span>-m venv .venv</span>
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    登入後複製
    登入後複製

    >要進行更高級的測試,請使用MailHog或MailTrap之類的工具,這些工具充當偽造的SMTP服務器,用於捕獲和顯示測試電子郵件。

    我如何安全地管理敏感電子郵件憑據?

    >

    >使用Django Environ從.ENV文件加載敏感憑據(例如電子郵件主機,用戶名和密碼):

    1. 安裝Django Environ:PIP安裝Django-Environ
    2. >創建一個.env文件:email_host = smtp.gmail.com email_host_user = your_email@example.com emage_host_password = your_app_password
    3. >在settings.py中加載.env文件:import emovy.env()emover.env.env.eard_env()email_host = env('email_host')email_host_host_user = env('email_host_user')email_host_user') email_host_password' )

以上是如何使用SMTP服務器向Django發送電子郵件的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板