💨

djangoでmailgunを使う方法

2024/01/08に公開

正直お勧めしません

高いし、最低プランで5万通なので。amazon sesとかのほうがいいと思います(無料枠あるし。でも僕は承認されなかった)。mailgunも何かすごい部分があるのかもしれませんが..

設定ファイル settings.py

settings.pyで設定
env()はdjango-environです。共有するときに、見られたらいけないapi keyとかを別ファイルに書ける。gitignoreでそのファイルをgitから除外するとgithubとかで公開されない。

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.mailgun.org'  # MailgunのSMTPホスト
EMAIL_PORT = 587  # SMTPポート
EMAIL_USE_TLS = True
EMAIL_HOST_USER = env('EMAIL_HOST_USER') # postmaster@.... みたいなやつ 認証してないならpostmaster@sandbox...mailgun.orgみたいな
EMAIL_HOST_PASSWORD = env('EMAIL_HOST_PASSWORD')  # MailgunのAPIキーかsmtpのパスワード
DEFAULT_FROM_EMAIL = 'email@infolink.dev'  # 送信元メールアドレス

API

API keyは右上の自分のアカウントのドロップダウンメニューから api securityに行って、Mailgun API keysの add new keyからkeyを作成。

その時しかkeyはひょうじされないので、メモするか今すぐコードに書こう。忘れたら、新しいapi keyを作って、それを使う。

smtp

別に隠さなくてもいいと思うけど、一応。

sendingからdomain settingsへ行って、画像のように。
reset passwordで新しいkeyを取得。

smtpとapiの違い

smtpはアドレスごとで、apiはすべてのアドレスで使える。

サンドボックス環境から抜け出す

サンドボックス環境だと、自分のアカウントのメールアドレスにしか送れません。
送れるようにするには、独自ドメインとそれを認証しなければならない。

さっきの画像のdomainsで、add new domainでmg.yourdomainを入力。僕の場合、mg.infolink.dev。
サブドメインのほうがいいと言われたけど、なんでなのかはわからないです。

そのドメインをクリックして、使ってるレジストラーでtxtレコードなどを入力するだけ。どうすればいいかは書いてあるので、それに従ってレコードを追加してください。

domainsを押して、チェックマークがついていれば使えます。

infolinkで、間違った情報を知る

infolink.devを使えば、間違いが指摘されたときに通知を受け取れます

infolink.devの詳細
https://zenn.dev/pandakun/articles/dc4886a996cb98

Discussion