国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

目錄
了解SMTP服務(wù)器和簡(jiǎn)單的郵件傳輸協(xié)議
>電子郵件主機(jī)用戶
電子郵件主機(jī)密碼
>由于Google將“較不安全的應(yīng)用程序”棄用,因此連接到Gmail帳戶發(fā)送電子郵件的正確和安全方法是使用應(yīng)用程序密碼。僅當(dāng)您為Google帳戶啟用2步驗(yàn)證時(shí),應(yīng)用程序密碼才能可用。
在那里,輸入應(yīng)用程序密碼的名稱,然后單擊“創(chuàng)建”。
使用Django Environ來保護(hù)電子郵件后端憑據(jù)
>讓我們從創(chuàng)建聯(lián)系應(yīng)用程序開始。輸入項(xiàng)目根目錄(Manage.py所在的位置)并運(yùn)行:
聯(lián)系URL
5。用戶注冊(cè)中的電子郵件驗(yàn)證
我如何安全地管理敏感電子郵件憑據(jù)?
首頁 科技周邊 IT業(yè)界 如何使用SMTP服務(wù)器向Django發(fā)送電子郵件

如何使用SMTP服務(wù)器向Django發(fā)送電子郵件

Feb 08, 2025 am 10:58 AM

如何使用SMTP服務(wù)器向Django發(fā)送電子郵件

您是否曾經(jīng)在Django項(xiàng)目中設(shè)置電子郵件集成方面曾努力?無論是配置SMTP設(shè)置,處理安全問題還是自動(dòng)聯(lián)系表格,電子郵件功能對(duì)于用戶參與和信任至關(guān)重要。

>

在本教程中,我們將介紹如何使用Django使用DJANGO進(jìn)行實(shí)用,分步說明。我們將介紹如何配置Django SMTP連接,如何為您的電子郵件提供商設(shè)置密碼以及如何通過Django Shell發(fā)送電子郵件。我們還將查看如何為您的Django應(yīng)用程序設(shè)置聯(lián)系表格,這將使您的客戶可以與您聯(lián)系。

鑰匙要點(diǎn)

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

> NOTE

>:為您的生產(chǎn)網(wǎng)站使用您的個(gè)人電子郵件服務(wù)不是一個(gè)好主意。您可以了解有關(guān)

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

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

>

了解SMTP服務(wù)器和簡(jiǎn)單的郵件傳輸協(xié)議

> SMTP(或簡(jiǎn)單的郵件傳輸協(xié)議)是確定如何從發(fā)件人傳輸?shù)绞占说囊唤M規(guī)則。 SMTP服務(wù)器使用此協(xié)議發(fā)送和繼電器傳出電子郵件。 (請(qǐng)注意,其他協(xié)議控制電子郵件的收到>。 > SMTP服務(wù)器始終具有發(fā)送消息的唯一地址和一個(gè)特定端口,在大多數(shù)情況下是587。我們將在Django電子郵件發(fā)送中查看該端口的相關(guān)。

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

地址:smtp.gmail.com

端口:587
  • 現(xiàn)在,讓我們看看如何與django發(fā)送電子郵件。
  • >
  • 創(chuàng)建一個(gè)django項(xiàng)目

>每個(gè)Django項(xiàng)目都應(yīng)該具有虛擬環(huán)境,因?yàn)槲覀儾幌肱獊y項(xiàng)目依賴項(xiàng)。要?jiǎng)?chuàng)建一個(gè),請(qǐng)運(yùn)行以下內(nèi)容:

注意:如果您不熟悉虛擬環(huán)境,請(qǐng)確保檢查我們的

python <span>-m venv .venv</span>
python虛擬環(huán)境指南

。 >上面的命令創(chuàng)建了一個(gè)具有名稱.venv的虛擬環(huán)境。要激活此虛擬環(huán)境,您可以使用以下內(nèi)容:> >由于Django是第三方包,您必須使用PIP安裝它:>

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

要?jiǎng)?chuàng)建一個(gè)Django項(xiàng)目,您可以調(diào)用命令行實(shí)用程序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>

>使用上面的命令,您正在創(chuàng)建一個(gè)帶有emailProject的Django項(xiàng)目,但是您可以使用任何想要的名稱創(chuàng)建項(xiàng)目?,F(xiàn)在,輸入到項(xiàng)目目錄并運(yùn)行服務(wù)器:

pip <span>install django</span>

運(yùn)行Django服務(wù)器后,請(qǐng)?jiān)L問http:// localhost:8000在您的瀏覽器中。您會(huì)看到一個(gè)帶有最新Django發(fā)行說明的自動(dòng)生成頁面。
django-admin startproject EmailProject

<span>cd EmailProject
</span>python manage.py runserver
>配置DJANGO電子郵件后端為SMTP
如何使用SMTP服務(wù)器向Django發(fā)送電子郵件電子郵件后端是與Django發(fā)送電子郵件的機(jī)制。默認(rèn)情況下,django使用django.core.mail.backends.smtp.emailbackend,它允許其連接到SMTP服務(wù)器并發(fā)送電子郵件。根據(jù)環(huán)境(開發(fā)或生產(chǎn)),您可以選擇其他電子郵件后端以適合您的需求。
>

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

>
注意:為簡(jiǎn)單起見,我們將僅使用unix(macOS或linux)系統(tǒng)命令。
python <span>-m venv .venv</span>

樹命令輸出目錄的文件結(jié)構(gòu)。在這種情況下,由于我們沒有給它一個(gè)特定的目錄路徑,因此,如果我們?cè)陧?xiàng)目的根文件夾中,我們將獲得類似的內(nèi)容:>

<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文件夾中的設(shè)置。它持有您需要的所有項(xiàng)目配置,并允許您設(shè)置自定義變量。正如Django文檔所說,“設(shè)置文件只是具有模塊級(jí)變量的Python模塊”。

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

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

>電子郵件后端
pip <span>install django</span>

email_backend設(shè)置聲明后端我們的django項(xiàng)目將用于與SMTP服務(wù)器連接。>

這個(gè)變量指向SMTP.EmailBackend類,該類接收發(fā)送電子郵件所需的所有參數(shù)。我強(qiáng)烈建議您直接在Django源代碼上查看類構(gòu)造函數(shù)。您會(huì)對(duì)此代碼的可讀性感到驚訝。

>

>

注意:盡管此類是默認(rèn)的email_backend,但在DJANGO設(shè)置中被認(rèn)為是一個(gè)好習(xí)慣。

>所有其他電子郵件設(shè)置將基于此Emailbackend類的構(gòu)造函數(shù)。

>電子郵件主機(jī) > email_host設(shè)置是指您將使用的SMTP服務(wù)器域。這取決于您的電子郵件提供商。下面是一張帶有SMTP服務(wù)器主機(jī)的表,該表與三個(gè)普通提供商相對(duì)應(yīng):>

電子郵件提供者

smtp Server主機(jī)

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

>我們現(xiàn)在將此設(shè)置留為空白,因?yàn)槲覀兩院髮⑹褂?ENV文件以避免使用硬編碼的敏感鍵或每個(gè)站點(diǎn)配置。您切勿將憑據(jù)直接設(shè)置為代碼。我們將使用Django Environ來解決此問題。
>電子郵件端口 > email_port設(shè)置必須設(shè)置為587,因?yàn)樗谴蠖鄶?shù)SMTP服務(wù)器的默認(rèn)端口。個(gè)人電子郵件提供商仍然如此。該端口與TLS加密一起使用,以確保發(fā)送電子郵件的安全性。> 電子郵件使用tls

>傳輸層安全性(TLS)是在網(wǎng)絡(luò)上使用的安全協(xié)議,用于加密Web應(yīng)用程序(DJANGO)和服務(wù)器(SMTP服務(wù)器)之間的通信。

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

>電子郵件主機(jī)用戶

> email_host_user設(shè)置是您的個(gè)人電子郵件地址?,F(xiàn)在將其留為空白,因?yàn)槲覀儗⑹褂胐jango-environ來設(shè)置所有這些憑據(jù)。

電子郵件主機(jī)密碼

> email_host_password設(shè)置是您從電子郵件帳戶中獲取的應(yīng)用程序密碼 - 本節(jié)之后我們將要進(jìn)行的過程。同樣的故事:將此設(shè)置留為空白,因?yàn)槲覀円院髮⑹褂铆h(huán)境變量。

> 對(duì)于其他提供商,您可以相應(yīng)地調(diào)整設(shè)置。例如:

> 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>
>使用應(yīng)用程序密碼設(shè)置Gmail SMTP服務(wù)器

>由于Google將“較不安全的應(yīng)用程序”棄用,因此連接到Gmail帳戶發(fā)送電子郵件的正確和安全方法是使用應(yīng)用程序密碼。僅當(dāng)您為Google帳戶啟用2步驗(yàn)證時(shí),應(yīng)用程序密碼才能可用。

>

為什么使用應(yīng)用程序密碼?

>

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

導(dǎo)航到左側(cè)菜單中的安全性。
  1. >滾動(dòng)到“您如何登錄Google”部分。
  2. >
  3. >單擊“ 2步驗(yàn)證”,然后按照屏幕上的說明進(jìn)行操作:
  4. 使用您的電話號(hào)碼或身份驗(yàn)證器應(yīng)用程序來設(shè)置2步驗(yàn)證。
  5. >用發(fā)送到設(shè)備的代碼驗(yàn)證您的設(shè)置。
  6. 步驟2:生成一個(gè)應(yīng)用程序密碼
如何使用SMTP服務(wù)器向Django發(fā)送電子郵件>啟用了2步驗(yàn)證后,在搜索欄中搜索“應(yīng)用程序密碼”。

在那里,輸入應(yīng)用程序密碼的名稱,然后單擊“創(chuàng)建”。

  1. 然后,它將通過16個(gè)字符的應(yīng)用程序密碼提供一個(gè)彈出模式。確保將其保存在某個(gè)地方,因?yàn)樗粫?huì)顯示一次。
>
如何使用SMTP服務(wù)器向Django發(fā)送電子郵件
  1. 如果您使用的是其他電子郵件提供商,請(qǐng)確保閱讀以下指南:>
    • > Yahoo App密碼
    • Outlook或Hotmail App密碼

    使用Django Environ來保護(hù)電子郵件后端憑據(jù)

    即使您只是在開發(fā)中發(fā)送電子郵件,也不應(yīng)直接將密碼寫入源代碼。當(dāng)使用版本控制系統(tǒng)與GitHub一起托管您的項(xiàng)目時(shí),這變得更加重要。 您不希望別人訪問您的數(shù)據(jù)。

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

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

    現(xiàn)在,打開該.ENV文件并輸入以下鍵 - 值對(duì):>
    python <span>-m venv .venv</span>

    分解此文件的內(nèi)容:

    <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服務(wù)器地址。請(qǐng)參閱上面的電子郵件主機(jī)表以獲取快速指導(dǎo)。在這種情況下,我正在使用smtp.gmail.com,gmail smtp地址。

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

    >
    pip <span>install django</span>
    現(xiàn)在,打開位于emailProject目錄中的設(shè)置。

    首先,我們?cè)谠O(shè)置文件的頂部導(dǎo)入環(huán)境包。請(qǐng)記住,所有進(jìn)口都應(yīng)該在開始。然后,我們創(chuàng)建一個(gè)Env變量,該變量將包含.env。 > env('鍵')語句意味著我們正在查找該密鑰的價(jià)值。在進(jìn)行之前,請(qǐng)確保已設(shè)置.ENV文件。否則,如果未設(shè)置某些環(huán)境變量,您將獲得DJANGO不正確配置的錯(cuò)誤。

    >

    >

    注意:conferient_address是一種自定義設(shè)置,我們將使用該設(shè)置將電子郵件發(fā)送到我們可以訪問的地址。
    django-admin startproject EmailProject

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

    >

    1。與Django Shell 一起發(fā)送電子郵件 >最后,我們進(jìn)入了文章的多汁部分!是時(shí)候?qū)⒛牡谝环怆娮余]件發(fā)送到Django了。

    >

    打開一個(gè)終端,激活虛擬環(huán)境并運(yùn)行:>

    <span>cd EmailProject
    </span>python manage.py runserver
    >這將創(chuàng)建一個(gè)已經(jīng)為我們配置的所有Django設(shè)置創(chuàng)建一個(gè)外殼。在那個(gè)全新的外殼中,粘貼以下代碼:

    >

    我們還可以在不指定參數(shù)的情況下進(jìn)行單線工作:>

    python <span>-m venv .venv</span>

    讓我們分解上面的代碼:

    • 我們導(dǎo)入django send_mail函數(shù)。
    • 然后,我們導(dǎo)入包含所有全局設(shè)置和每個(gè)站點(diǎn)設(shè)置的設(shè)置對(duì)象(settings.py文件中的這些對(duì)象)。
    • >最后,我們將所有所需的參數(shù)傳遞給send_mail函數(shù)。此函數(shù)返回在這種情況下發(fā)送的電子郵件數(shù)量1.
    • >請(qǐng)注意我們?nèi)绾问褂迷O(shè)置對(duì)象獲取From_email(您發(fā)送電子郵件的電子郵件)和conterient_list(我們?cè)?ENV中定義的conferient_address自定義設(shè)置)。
    >

    現(xiàn)在,如果我檢查收件箱 - 當(dāng)我將收件人_address環(huán)境變量設(shè)置為電子郵件地址時(shí),我將獲得Django發(fā)送的電子郵件。

    >

    如何使用SMTP服務(wù)器向Django發(fā)送電子郵件>異步電子郵件發(fā)送
    在Django 4.x中,支持異步電子郵件發(fā)送以提高性能。這對(duì)于高流量網(wǎng)站或發(fā)送批量電子郵件時(shí)很有用。

    >

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

    >

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

    >
    <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>

    >非阻止操作,發(fā)送電子郵件不應(yīng)延遲用戶請(qǐng)求。>

    >發(fā)送批量電子郵件(使用芹菜等任務(wù)隊(duì)列進(jìn)行生產(chǎn)規(guī)模任務(wù))。
    • 注意:雖然Django支持異步電子郵件,但對(duì)于生產(chǎn)規(guī)模的批量電子郵件,請(qǐng)使用諸如芹菜或Django-Q之類的背景任務(wù)隊(duì)列進(jìn)行真正的非阻止操作。
    • >
    • 2。使用Django
    構(gòu)建自動(dòng)觸點(diǎn)表格

    >在本節(jié)中,我們將使用Django表單和內(nèi)置的send_mail函數(shù)構(gòu)建自動(dòng)聯(lián)系表格。我們還將在聯(lián)系表格中創(chuàng)建一個(gè)自定義函數(shù),send(),以便在視圖中更容易實(shí)現(xiàn)。

    >讓我們從創(chuàng)建聯(lián)系應(yīng)用程序開始。輸入項(xiàng)目根目錄(Manage.py所在的位置)并運(yùn)行:

    >

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

    >在使用聯(lián)系人應(yīng)用程序前進(jìn)之前,讓我們配置emailProject/urls.py文件內(nèi)部的urlpatterns。為此,請(qǐng)導(dǎo)入django.urls.include函數(shù),并在整個(gè)項(xiàng)目中包含聯(lián)系URL。不用擔(dān)心;我們稍后將配置聯(lián)系URL:

    pip <span>install django</span>

    觸點(diǎn)表格

    django-admin startproject EmailProject
    >輸入聯(lián)系人應(yīng)用程序文件夾并創(chuàng)建一個(gè)forms.py文件。最好在forms.py文件中定義您的所有表格,這是一個(gè)很好的做法,但這不是強(qiáng)制性的。這就是為什么Django默認(rèn)不包含此文件的原因。您可以使用以下命令來創(chuàng)建表單文件:>

    打開您剛創(chuàng)建的文件,并進(jìn)行以下導(dǎo)入:>
    python <span>-m venv .venv</span>

    > django表單模塊為我們提供了創(chuàng)建我們的聯(lián)系表格的所有必要類和字段。我們?cè)俅螌?dǎo)入設(shè)置對(duì)象和send_mail函數(shù)以發(fā)送電子郵件。

    >

    我們的聯(lián)系表將包含幾個(gè)字段,并使用兩種自定義方法:get_info(),該方法格式化了用戶提供的信息,并發(fā)送()將發(fā)送電子郵件。讓我們看看這是在代碼中實(shí)現(xiàn)的:

    <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>

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

    >
    • >名稱和查詢是Charfields,代表聯(lián)系消息的名稱和原因。
    • 電子郵件是一個(gè)電子郵件場(chǎng),代表試圖與您聯(lián)系的人的電子郵件地址。請(qǐng)注意,該電子郵件不會(huì)由用戶的電子郵件地址發(fā)送,而是通過您設(shè)置的電子郵件地址發(fā)送的電子郵件地址。
    • 郵件是另一個(gè)Charfield,除了我們使用的是Textarea小部件。這意味著,在顯示表單時(shí),它將呈現(xiàn)a
    • >進(jìn)入自定義方法,我們僅使用get_info方法來格式化用戶的信息并返回兩個(gè)變量:主題,這是詢問字段和消息,這將是Django發(fā)送的實(shí)際電子郵件消息。
    • 另一方面,send()方法僅從get_info獲取格式化的信息,并使用send_mail函數(shù)發(fā)送消息。盡管本節(jié)很大,但是您會(huì)看到我們?nèi)绾瓮ㄟ^將所有發(fā)送邏輯實(shí)現(xiàn)到ContactForm本身來簡(jiǎn)化聯(lián)系人視圖。
    >

    聯(lián)系人視圖

    >打開Contact/views.py文件并添加以下導(dǎo)入:>

    如您所見,我們將使用django通用視圖,這在制作簡(jiǎn)單任務(wù)時(shí)節(jié)省了我們大量的時(shí)間 - 例如,在設(shè)置具有FormView的表單或創(chuàng)建僅呈現(xiàn)模板的視圖時(shí)templateView。

    >另外,我們正在導(dǎo)入上一節(jié)中構(gòu)建的聯(lián)系人和使用

    基于類的視圖

    時(shí)使用的reverse_lazy函數(shù)。繼續(xù)視圖,讓我們寫下ContactView:
    pip <span>install django</span>
    >

    如您所見,我們正在使用我們創(chuàng)建的ContactForm構(gòu)建一個(gè)簡(jiǎn)單的FormView。我們還將設(shè)置template_name和Success_url。我們將編寫HTML模板并稍后設(shè)置URL。

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

    > 上述form_valid方法實(shí)現(xiàn)在基于函數(shù)的視圖中等效于以下內(nèi)容:

    python <span>-m venv .venv</span>

    >結(jié)束本節(jié),我們將編寫ContactSucessView,該ContactSucessView將向用戶顯示成功消息。由于我們已經(jīng)導(dǎo)入了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存儲(chǔ)庫上查看views.py文件,如果您有任何疑問。

    聯(lián)系URL

    是時(shí)候創(chuàng)建聯(lián)系應(yīng)用程序的URL模式了。由于django默認(rèn)不給我們提供urls.py文件,因此我們需要使用以下命令來創(chuàng)建它(請(qǐng)確保在Contact App文件夾中):>

    pip <span>install django</span>
    打開該文件并設(shè)置app_name和urlpatterns變量:

    django-admin startproject EmailProject
    >我們使用路徑將路由及其通訊視圖包括在應(yīng)用程序的URL配置中。當(dāng)我們將app_name變量設(shè)置為“聯(lián)系”時(shí),這意味著該應(yīng)用程序的URL

    > >

    注意:一個(gè)名稱空間是我們?cè)赿jango模板和視圖中動(dòng)態(tài)地稱為url。
    <span>cd EmailProject
    </span>python manage.py runserver
    >您可以在官方文檔中了解有關(guān)Django URL調(diào)度程序的更多信息。

    > >寫模板

    > django模板是使用django模板語言提供的HTML和特殊標(biāo)簽動(dòng)態(tài)顯示數(shù)據(jù)的首選方法。

    對(duì)于此特定應(yīng)用,我們將使用三個(gè)模板:

    >

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

    contact.html:顯示觸點(diǎn)表格。

    success.html:顯示成功消息。
    • >讓我們首先創(chuàng)建聯(lián)系人的應(yīng)用模板結(jié)構(gòu)(請(qǐng)確保您在聯(lián)系人應(yīng)用程序文件夾中):
    • 上面的命令創(chuàng)建可重復(fù)使用的django應(yīng)用程序的典型模板結(jié)構(gòu) - appName/applates/appname-以及我之前提到的樹模板文件。以下是應(yīng)用程序文件結(jié)構(gòu)現(xiàn)在應(yīng)該看起來像:

    >讓我們跳入base.html模板的內(nèi)容:

    如您所見,這是HTML文件的簡(jiǎn)單骨架,其中包含Bootstrap 5的鏈接。這使我們可以在不使用CSS文件的情況下對(duì)聯(lián)系人應(yīng)用進(jìn)行樣式化。 {%塊block of-block%}標(biāo)簽使我們能夠設(shè)置“子模板”將使用的占位符。此標(biāo)簽的使用使模板繼承是一個(gè)容易的任務(wù)。
    tree

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

    >
    ├── EmailProject
    │   ├── asgi.py
    │   ├── __init__.py
    │   ├── settings.py
    │   ├── urls.py
    │   └── wsgi.py
    └── manage.py
    
    1 directory, 6 files

    再次,crispy_forms是一個(gè)django應(yīng)用,我們需要將其包含在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的模板包,因?yàn)锽ootstrap表格類是第四版和第五版之間的兼容(在寫作時(shí))。

    >

    現(xiàn)在,讓我們使用Contact.html模板:

    python <span>-m venv .venv</span>
    請(qǐng)注意我們?nèi)绾螖U(kuò)展基本模板并利用塊占位符。這就是使Django模板語言如此高效的原因,因?yàn)樗刮覀兛梢怨?jié)省大量的HTML復(fù)制和粘貼。

    >

    >談?wù)摫砀?,我們使用的是“帖子”,這意味著我們的ContactView將處理用戶給出的數(shù)據(jù),并在表格有效時(shí)發(fā)送電子郵件。由于安全原因,{%csrf_token%}是必不可少的。 Django的文檔在CSRF代幣上有一個(gè)專用頁面,并且在使用表格時(shí)使用它們的原因。

    我們將使用脆皮模板標(biāo)簽呈現(xiàn)表單,這就是為什么我們用{%load load Crispy_forms_tags%}加載脆皮標(biāo)簽的原因。

    >

    最后,讓我們寫下成功。

    如您所見,這是一個(gè)簡(jiǎn)單的成功公告,并具有指向聯(lián)系表格的鏈接,以防用戶要發(fā)送另一個(gè)消息。

    >讓我們?cè)俅芜\(yùn)行服務(wù)器并訪問http:// localhost:8000(請(qǐng)確保已激活.venv,并且您在項(xiàng)目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>
    下圖顯示了最終觸點(diǎn)表格的外觀。

    pip <span>install django</span>
    這是成功消息的圖像。

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

    >

    如何使用SMTP服務(wù)器向Django發(fā)送電子郵件
    >關(guān)注

    的最佳實(shí)踐

    1??芍貜?fù)使用的電子郵件發(fā)送功能
    如何使用SMTP服務(wù)器向Django發(fā)送電子郵件>使您的電子郵件訂閱邏輯模塊化和可重復(fù)使用,您可以將電子郵件發(fā)送功能移動(dòng)到輔助功能:>

    >現(xiàn)在,您可以在需要發(fā)送電子郵件(包括您的聯(lián)系表格)的任何地方調(diào)用此功能。>

    2。單元測(cè)試

    您可以使用django.test進(jìn)行測(cè)試發(fā)送電子郵件django功能。

    django-admin startproject EmailProject
    3。發(fā)送豐富的HTML電子郵件

    HTML電子郵件提供更好的設(shè)計(jì)和演示文稿。使用Django的模板引擎來創(chuàng)建豐富的電子郵件內(nèi)容:

    4。集成第三方電子郵件服務(wù)

    >用于生產(chǎn)就緒的應(yīng)用程序,請(qǐng)考慮使用SendGrid,MailGun或AWS SES等第三方服務(wù)。這些服務(wù)提供了高級(jí)功能,例如電子郵件分析,交貨跟蹤和垃圾郵件過濾。>
    <span>cd EmailProject
    </span>python manage.py runserver

    5。用戶注冊(cè)中的電子郵件驗(yàn)證

    >在用戶注冊(cè)期間發(fā)送電子郵件驗(yàn)證鏈接以防止垃圾郵件帳戶。

    tree
    總結(jié)

    恭喜!您已經(jīng)學(xué)會(huì)了如何與Django一起發(fā)送電子郵件以及如何構(gòu)建Django聯(lián)系表。

    有很多方法可以與Django發(fā)送電子郵件。在本教程中,您已經(jīng)與您的個(gè)人電子郵件地址一起完成了,但是我希望您探索其他工具并將其集成到您的項(xiàng)目中。

    >

    在本教程中,我們介紹了以下內(nèi)容:

    >
    • >如何設(shè)置Django設(shè)置以提供電子郵件
    • >如何使用個(gè)人電子郵件帳戶在小型項(xiàng)目中發(fā)送電子郵件
    • >如何使用.ENV文件在Django項(xiàng)目中使用敏感數(shù)據(jù)
    • 如何構(gòu)建自動(dòng)聯(lián)系表格
    • 有關(guān)Django的更多信息,請(qǐng)查看“使用django構(gòu)建照片共享應(yīng)用”。
    DJANGO上的FAQS

    使用SMTP服務(wù)器發(fā)送電子郵件

    我可以發(fā)送django的電子郵件嗎?

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

    如何在django中發(fā)送電子郵件?

    >

    >配置DJANGO發(fā)送電子郵件:>

    Set the SMTP details in your settings.py file:EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' EMAIL_HOST = 'smtp.gmail.com' EMAIL_PORT = 587 EMAIL_USE_TLS = True EMAIL_HOST_USER = 'your_email@example .com'email_host_password ='your_app_password'

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

    >

    我如何在不發(fā)送真實(shí)電子郵件的情況下測(cè)試發(fā)送django的電子郵件?

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

    >
    python <span>-m venv .venv</span>

    >要進(jìn)行更高級(jí)的測(cè)試,請(qǐng)使用MailHog或MailTrap之類的工具,這些工具充當(dāng)偽造的SMTP服務(wù)器,用于捕獲和顯示測(cè)試電子郵件。

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

    >

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

    1. 安裝Django Environ:PIP安裝Django-Environ
    2. >創(chuàng)建一個(gè).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服務(wù)器向Django發(fā)送電子郵件的詳細(xì)內(nèi)容。更多信息請(qǐng)關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本站聲明
本文內(nèi)容由網(wǎng)友自發(fā)貢獻(xiàn),版權(quán)歸原作者所有,本站不承擔(dān)相應(yīng)法律責(zé)任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請(qǐng)聯(lián)系admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣服圖片

Undresser.AI Undress

Undresser.AI Undress

人工智能驅(qū)動(dòng)的應(yīng)用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用于從照片中去除衣服的在線人工智能工具。

Clothoff.io

Clothoff.io

AI脫衣機(jī)

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智能換臉工具輕松在任何視頻中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的代碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

功能強(qiáng)大的PHP集成開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級(jí)代碼編輯軟件(SublimeText3)

開發(fā)人員的快捷方式到您的Udemy樣平臺(tái) 開發(fā)人員的快捷方式到您的Udemy樣平臺(tái) Jun 17, 2025 pm 04:43 PM

在開發(fā)類似于Udemy的學(xué)習(xí)平臺(tái)時(shí),重點(diǎn)不僅僅是內(nèi)容質(zhì)量。同樣重要的是如何交付內(nèi)容。這是因?yàn)楝F(xiàn)代教育平臺(tái)依賴于媒體,快速且易于消化。

用于購買SSL證書的經(jīng)濟(jì)有效的轉(zhuǎn)售商平臺(tái) 用于購買SSL證書的經(jīng)濟(jì)有效的轉(zhuǎn)售商平臺(tái) Jun 25, 2025 am 08:28 AM

在一個(gè)在線信任不可談判的世界中,SSL證書對(duì)于每個(gè)網(wǎng)站都至關(guān)重要。 SSL認(rèn)證的市場(chǎng)規(guī)模在2024年價(jià)值56億美元,并且由于電子商務(wù)業(yè)務(wù)的激增而推動(dòng)了強(qiáng)勁的增長(zhǎng)

SaaS的5個(gè)最佳支付門戶:您的最終指南 SaaS的5個(gè)最佳支付門戶:您的最終指南 Jun 29, 2025 am 08:28 AM

付款網(wǎng)關(guān)是付款過程的關(guān)鍵組成部分,使企業(yè)能夠在線接受付款。它充當(dāng)客戶與商人之間的橋梁,安全地傳輸付款信息并促進(jìn)交易。 為了

新研究聲稱AI比我們更好地'理解”情緒。特別是在情感上充滿電的情況下 新研究聲稱AI比我們更好地'理解”情緒。特別是在情感上充滿電的情況下 Jul 03, 2025 pm 05:48 PM

在我們認(rèn)為人類始終超越機(jī)器的領(lǐng)域的另一個(gè)挫折中,研究人員現(xiàn)在建議AI比我們更好地理解情感。研究人員發(fā)現(xiàn)人工智能證明了一個(gè)

由于新的Microsoft AI型號(hào) 由于新的Microsoft AI型號(hào) Jul 05, 2025 am 12:44 AM

一種新的人工智能(AI)模型已經(jīng)證明了比幾個(gè)使用最廣泛使用的全球預(yù)測(cè)系統(tǒng)更快,更精確地預(yù)測(cè)重大天氣事件的能力。該名為Aurora的模型已接受過培訓(xùn)。

您的設(shè)備喂養(yǎng)AI助手并收集個(gè)人數(shù)據(jù),即使他們睡著了。這是如何知道您分享的內(nèi)容。 您的設(shè)備喂養(yǎng)AI助手并收集個(gè)人數(shù)據(jù),即使他們睡著了。這是如何知道您分享的內(nèi)容。 Jul 05, 2025 am 01:12 AM

不管喜歡與否,人工智能已成為日常生活的一部分。許多設(shè)備(包括電動(dòng)剃須刀和牙刷)已成為AI驅(qū)動(dòng)的“使用機(jī)器學(xué)習(xí)算法來跟蹤一個(gè)人的使用方式,Devi的方式

高級(jí)AI型號(hào)的CO&#8322;回答相同問題時(shí)的排放量比更常見的LLM 高級(jí)AI型號(hào)的CO&#8322;回答相同問題時(shí)的排放量比更常見的LLM Jul 06, 2025 am 12:37 AM

根據(jù)最近的一項(xiàng)研究,我們?cè)噲D使AI模型的功能越精確,其碳排放量就越大 - 某些提示產(chǎn)生的二氧化碳比其他提示高達(dá)50倍。

See all articles