您是否曾經在Django項目中設置電子郵件集成方面曾努力?無論是配置SMTP設置,處理安全問題還是自動聯繫表格,電子郵件功能對於用戶參與和信任至關重要。
>在本教程中,我們將介紹如何使用Django使用DJANGO進行實用,分步說明。我們將介紹如何配置Django SMTP連接,如何為您的電子郵件提供商設置密碼以及如何通過Django Shell發送電子郵件。我們還將查看如何為您的Django應用程序設置聯繫表格,這將使您的客戶可以與您聯繫。
鑰匙要點 gmail發送限制的更多信息,或者參考電子郵件提供商的局限 注意:本教程的完整代碼可在GitHub上找到。 > SMTP(或簡單的郵件傳輸協議)是確定如何從發件人傳輸到收件人的一組規則。 SMTP服務器使用此協議發送和繼電器傳出電子郵件。 (請注意,其他協議控制電子郵件的收到>。
> SMTP服務器始終具有發送消息的唯一地址和一個特定端口,在大多數情況下是587。我們將在Django電子郵件發送中查看該端口的相關。
>每個Django項目都應該具有虛擬環境,因為我們不想弄亂項目依賴項。要創建一個,請運行以下內容: 注意:如果您不熟悉虛擬環境,請確保檢查我們的 。
>上面的命令創建了一個具有名稱.venv的虛擬環境。要激活此虛擬環境,您可以使用以下內容:>
>由於Django是第三方包,您必須使用PIP安裝它: 要創建一個Django項目,您可以調用命令行實用程序Django-admin: >使用上面的命令,您正在創建一個帶有emailProject的Django項目,但是您可以使用任何想要的名稱創建項目。現在,輸入到項目目錄並運行服務器:
>在發送電子郵件之前,您需要修改設置文件,因此,讓我們使用以下命令找到該文件: 樹命令輸出目錄的文件結構。在這種情況下,由於我們沒有給它一個特定的目錄路徑,因此,如果我們在項目的根文件夾中,我們將獲得類似的內容: >讓我們看一下與Django發送電子郵件所需的設置。打開emailProject/settings.py文件並將以下設置粘貼到文件底部: >讓我們通過分析這些設置中的每一個來分解上述代碼。 email_backend設置聲明後端我們的django項目將用於與SMTP服務器連接。 注意:儘管此類是默認的email_backend,但在DJANGO設置中被認為是一個好習慣。
>電子郵件主機
> email_host設置是指您將使用的SMTP服務器域。這取決於您的電子郵件提供商。下面是一張帶有SMTP服務器主機的表,該表與三個普通提供商相對應: 電子郵件提供者 gmailsmtp.gmail.com.outlook/hotmailsmtp-mail.outlook.utlook.comyahoosmtp.mail.yahoo.com >傳輸層安全性(TLS)是在網絡上使用的安全協議,用於加密Web應用程序(DJANGO)和服務器(SMTP服務器)之間的通信。
> email_host_user設置是您的個人電子郵件地址。現在將其留為空白,因為我們將使用django-environ來設置所有這些憑據。 > email_host_password設置是您從電子郵件帳戶中獲取的應用程序密碼 - 本節之後我們將要進行的過程。同樣的故事:將此設置留為空白,因為我們以後將使用環境變量。
為什麼使用應用程序密碼? 即使您只是在開發中發送電子郵件,也不應直接將密碼寫入源代碼。當使用版本控制系統與GitHub一起託管您的項目時,這變得更加重要。 您不希望別人訪問您的數據。 >讓我們看看如何使用django-environ。
分解此文件的內容: > email_host:您的電子郵件提供商的SMTP服務器地址。請參閱上面的電子郵件主機表以獲取快速指導。在這種情況下,我正在使用smtp.gmail.com,gmail smtp地址。
首先,我們在設置文件的頂部導入環境包。請記住,所有進口都應該在開始。然後,我們創建一個Env變量,該變量將包含.env。
> env('鍵')語句意味著我們正在查找該密鑰的價值。在進行之前,請確保已設置.ENV文件。否則,如果未設置某些環境變量,您將獲得DJANGO不正確配置的錯誤。 >
>
1。與Django Shell 一起發送電子郵件
>最後,我們進入了文章的多汁部分!是時候將您的第一封電子郵件發送到Django了。 打開一個終端,激活虛擬環境並運行: 我們還可以在不指定參數的情況下進行單線工作: 讓我們分解上面的代碼: 現在,如果我檢查收件箱 - 當我將收件人_address環境變量設置為電子郵件地址時,我將獲得Django發送的電子郵件。 >
>異步電子郵件發送在以下情況下很有用: >非阻止操作,發送電子郵件不應延遲用戶請求。 >在本節中,我們將使用Django表單和內置的send_mail函數構建自動聯繫表格。我們還將在聯繫表格中創建一個自定義函數,send(),以便在視圖中更容易實現。
然後,在emailProject/settings.py文件中將其安裝在您的installed_apps變量中
>在使用聯繫人應用程序前進之前,讓我們配置emailProject/urls.py文件內部的urlpatterns。為此,請導入django.urls.include函數,並在整個項目中包含聯繫URL。不用擔心;我們稍後將配置聯繫URL: 觸點表格
> django表單模塊為我們提供了創建我們的聯繫表格的所有必要類和字段。我們再次導入設置對象和send_mail函數以發送電子郵件。 我們的聯繫表將包含幾個字段,並使用兩種自定義方法:get_info(),該方法格式化了用戶提供的信息,並發送()將發送電子郵件。讓我們看看這是在代碼中實現的: 這個課程很大,所以讓我們分解每個部分的工作。首先,我們定義了發送電子郵件的四個字段: 聯繫人視圖 >打開Contact/views.py文件並添加以下導入: 基於類的視圖
如您所見,我們正在使用我們創建的ContactForm構建一個簡單的FormView。我們還將設置template_name和Success_url。我們將編寫HTML模板並稍後設置URL。
>
上述form_valid方法實現在基於函數的視圖中等效於以下內容: >結束本節,我們將編寫ContactSucessView,該ContactSucessView將向用戶顯示成功消息。由於我們已經導入了TemplateView類,因此我們只需要從中繼承並定義Template_name屬性: >您可以在GitHub存儲庫上查看views.py文件,如果您有任何疑問。 是時候創建聯繫應用程序的URL模式了。由於django默認不給我們提供urls.py文件,因此我們需要使用以下命令來創建它(請確保在Contact App文件夾中):
>
> >
>寫模板
base.html:所有其他模板都將從它繼承。它將包含所有模板必須具有的HTML骨架,以及鏈接到Bootstrap。
>讓我們跳入base.html模板的內容: >在進入表格之前,您需要安裝Django脆皮表套件,這使我們可以輕鬆地對它們進行樣式化: 再次,crispy_forms是一個django應用,我們需要將其包含在installed_apps列表中: 我們使用Bootstrap 4的模板包,因為Bootstrap表格類是第四版和第五版之間的兼容(在寫作時)。 現在,讓我們使用Contact.html模板: >
我們將使用脆皮模板標籤呈現表單,這就是為什麼我們用{%load load Crispy_forms_tags%}加載脆皮標籤的原因。 最後,讓我們寫下成功。
>讓我們再次運行服務器並訪問http:// localhost:8000(請確保已激活.venv,並且您在項目root文件夾中):
>
的最佳實踐
HTML電子郵件提供更好的設計和演示文稿。使用Django的模板引擎來創建豐富的電子郵件內容:
>在用戶註冊期間發送電子郵件驗證鏈接以防止垃圾郵件帳戶。
有很多方法可以與Django發送電子郵件。在本教程中,您已經與您的個人電子郵件地址一起完成了,但是我希望您探索其他工具並將其集成到您的項目中。 在本教程中,我們介紹了以下內容: 使用SMTP服務器發送電子郵件
>
>
在開發過程中,您可以使用可選的電子郵件後端來測試電子郵件,而無需連接到真正的SMTP服務器。例如:Console電子郵件後端:將電子郵件打印到終端而不是發送它們。 >要進行更高級的測試,請使用MailHog或MailTrap之類的工具,這些工具充當偽造的SMTP服務器,用於捕獲和顯示測試電子郵件。 >使用Django Environ從.ENV文件加載敏感憑據(例如電子郵件主機,用戶名和密碼):了解SMTP服務器和簡單的郵件傳輸協議
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>
pip <span>install django</span>
django-admin startproject EmailProject
<span>cd EmailProject
</span>python manage.py runserver
電子郵件後端是與Django發送電子郵件的機制。默認情況下,django使用django.core.mail.backends.smtp.emailbackend,它允許其連接到SMTP服務器並發送電子郵件。根據環境(開發或生產),您可以選擇其他電子郵件後端以適合您的需求。
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>
pip <span>install django</span>
>
>>電子郵件端口
> email_port設置必須設置為587,因為它是大多數SMTP服務器的默認端口。個人電子郵件提供商仍然如此。該端口與TLS加密一起使用,以確保發送電子郵件的安全性。 電子郵件使用tls
>電子郵件主機用戶
電子郵件主機密碼
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>
>由於Google將“較不安全的應用程序”棄用,因此連接到Gmail帳戶發送電子郵件的正確和安全方法是使用應用程序密碼。僅當您為Google帳戶啟用2步驗證時,應用程序密碼才能可用。
>
安全替代方案:App密碼不是共享主密碼,而是為特定應用程序提供有限的訪問。 >使用SMTP:APP密碼符合Gmail的SMTP訪問的安全要求。
訪問您的Google帳戶:https://myaccount.google.com/。
導航到左側菜單中的安全性。
>啟用了2步驗證後,在搜索欄中搜索“應用程序密碼”。
在那裡,輸入應用程序密碼的名稱,然後單擊“創建”。
>
使用Django Environ來保護電子郵件後端憑據
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>
注意:確保您的虛擬環境已激活。 >
pip <span>install django</span>
django-admin startproject EmailProject
<span>cd EmailProject
</span>python manage.py runserver
>
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>
構建自動觸點表格
>讓我們從創建聯繫應用程序開始。輸入項目根目錄(Manage.py所在的位置)並運行:
>
pip <span>install django</span>
django-admin startproject EmailProject
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>
>
>另外,我們正在導入上一節中構建的聯繫人和使用pip <span>install django</span>
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>
聯繫URL
pip <span>install django</span>
django-admin startproject EmailProject
<span>cd EmailProject
</span>python manage.py runserver
>
tree
├── EmailProject
│ ├── asgi.py
│ ├── __init__.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
└── manage.py
1 directory, 6 files
<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>
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>
pip <span>install django</span>
>使您的電子郵件訂閱邏輯模塊化和可重複使用,您可以將電子郵件發送功能移動到輔助功能:
>現在,您可以在需要發送電子郵件(包括您的聯繫表格)的任何地方調用此功能。
2。單元測試
您可以使用django.test進行測試發送電子郵件django功能。 django-admin startproject EmailProject
4。集成第三方電子郵件服務<span>cd EmailProject
</span>python manage.py runserver
5。用戶註冊中的電子郵件驗證
tree
恭喜!您已經學會瞭如何與Django一起發送電子郵件以及如何構建Django聯繫表。
DJANGO上的FAQS
是的,Django提供了一個內置的電子郵件待發送框架,該框架使發送電子郵件變得容易。通過在設置中配置SMTP設置。 Py文件,您可以使用send_mail函數或emailmessage類發送電子郵件。
如何在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'>
>配置您的傳入電子郵件服務器設置。通常,您需要電子郵件提供商的IMAP(Internet消息訪問協議)服務器詳細信息以及身份驗證憑據。接下來,使用iMaplib庫連接到您的電子郵件服務器並檢索電子郵件。您可以在Django視圖或自定義管理命令中執行此操作。獲取電子郵件後,您可以在Django應用程序中進行處理,提取信息並執行任何必要的操作。這可能涉及解析電子郵件內容,將相關數據存儲在數據庫中,或者基於電子郵件的內容或發件人觸發特定操作。 >
我如何在不發送真實電子郵件的情況下測試發送django的電子郵件? python <span>-m venv .venv</span>
我如何安全地管理敏感電子郵件憑據?
>
以上是如何使用SMTP服務器向Django發送電子郵件的詳細內容。更多資訊請關注PHP中文網其他相關文章!