Django 使用 AWS SES 發信


建立時間: 2022年6月10日 12:51
更新時間: 2023年9月14日 08:46

說明

AWS Simple Email Service (SES) 可以讓你發送 Email
本篇使用 Django 實作聯絡我們表單,當表單送出後
接著使用 SES 發信通知自己

Django 聯絡我們表單

關於 Django 實作聯絡我們,請參考 Django 實作 聯絡我們

AWS IMA User

建立一個使用者,讓 Django 可以透過這個使用者使用 SES
使用者需要開啟 AmazonSESFullAccess 權限
建立方式請參考 AWS IAM 建立 API 專用的使用者
記得要儲存 Access key id 和 secret access key
這個等等要在 Django 配置使用

驗證 SES 身份

本篇示範使用 domain 寄信到 gmail 信箱

驗證 Domain 身份

進入 SES

截圖.png

按 Create identity 按鈕

截圖1.png

Identity type 選擇 Domain
輸入你的 Domain 名稱

截圖2.png

按 Create identity 按鈕

截圖3.png

左側選擇 Configuration > Verified Identities
選擇你剛剛建立的 domain 身份

在 Authentication 標籤打開 Publish DNS records
將這些 CNAME 資料複製到你的 DNS 記錄,證明你是 Domain 擁有者
詳細步驟請參考 網域更新 DNS 記錄

截圖4.png

驗證 Email address 身份

因為 SES 預設在沙盒模式,沙盒模式中只能寄給驗證過的 Email
所以先把要寄的 Email 驗證過

步驟跟驗證 Domain 一樣
差異在 Identity type 選擇 Email address
並且輸入你的 Email

截圖5.png

完成後,你會在剛剛輸入的 Email 收到一封信,打開那封信確認要授權給 aws ses

確認

當你在 Verified identities 看到都驗證完成後就可以接著下一步了

截圖6.png

配置 Django 使用 SES

安裝插件

這個插件是用來讓 Django 使用 SES

終端

$ pip install django-ses

把 IAM 使用者的 access key id 和 secret access key 貼在下面

settings.py

# 這是本機測試用的
# EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'
# 使用 SES
EMAIL_BACKEND = 'django_ses.SESBackend'
AWS_ACCESS_KEY_ID = 'YOUR-ACCESS-KEY-ID'
AWS_SECRET_ACCESS_KEY = 'YOUR-SECRET-ACCESS-KEY'
# 設定 SES 的區域 ex: us-east-2
AWS_SES_REGION_NAME = 'REGION-NAME'
# 設定 email 端點 ex: email.us-east-2.amazonaws.com
AWS_SES_REGION_ENDPOINT ='REGION-ENDPOINT'

更新寄信的信箱位址

更新 views 上寄信和收信的地址,原本輸入的是假地址
domain 信箱帳號地址你可自己指定
例如: admin@your_domain.com

from_emailrecipient_list 輸入正確的 email 位址

views.py

# 略

def contact(request: HttpRequest) -> HttpResponse:
    # 略

        try:
            send_mail(
                subject=subject,
                message='',
                html_message=rendered_email,
                from_email='admin@your_domain.com',
                recipient_list=['mygmail@gmail.com']
            )
        except BadHeaderError:
            return HttpResponse('Invalid header found.')

    # 略

測試

最後在自己測試寄一封信,確認信箱有收到信
請留意信有可能在推銷郵件或者垃圾郵件中
如果不在主要信件區的話,可以再自行把信改成主要信件

參考

觀看次數: 1612
awsdjangoemailservicesessimple
按讚追蹤 Enjoy 軟體 Facebook 粉絲專頁
每週分享資訊技術

一杯咖啡的力量,勝過千言萬語的感謝。

支持我一杯咖啡,讓我繼續創作優質內容,與您分享更多知識與樂趣!