Django 使用 AWS SES 發信


建立時間: 2022年6月10日 12:51
更新時間: 2025年5月17日 23:26

說明

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

詳細步驟可以參考 建立 AWS SES 發信功能

配置 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.')

    # 略

測試

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

參考

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

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

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