【簡単】Djangoでメール送信機能を実装する4ステップ|実例付

※本サイトにはプロモーション・広告が含まれています。

(最終更新月:2022年2月)

✔このような方へ向けて書かれた記事となります

「Djangoでメールを送信したいけど、どうやるかわからない。」

「でも、Django初心者だからできるか不安、、、」

✔当記事を通じてお伝えすること

  • 【簡単!】Djangoでメールを送信する4ステップ|実例付

当記事を最後までご覧頂ければ、Djangoでメールを送信するための手順がわかります。また、実際のコード例も記載してますので、コピペすることにより実装時間の短縮となります。

筆者プロフィール

筆者プロフィールアイコン

【現職】プロダクトマネージャー

【副業】ブログ(月間20万PV)/YouTube/Web・アプリ制作

「プログラミング × ライティング × 営業」の経験を活かし、30後半からのIT系職へシフト。現在はプロダクトマネージャーとして、さまざまな関係者の間に入り奮闘してます。当サイトでは、実際に手を動かせるWebアプリの開発を通じて、プログラミングはもちろん、IT職に必要な情報を提供していきます。

【当ブログで紹介しているサイト】

当サイトチュートリアルで作成したデモ版日報アプリ

Django × Reactで開発したツール系Webアプリ

✔人に見せても恥ずかしくないコードを書こう

「リーダブルコード」は、わかりやすく良いコードの定義を教えてくれる本です。

  • 見るからにきれいなコードの書き方
  • コードの分割方法
  • 変数や関数の命名規則

エンジニアのスタンダートとすべき基準を一から解説しています。

何回も読むのに値する本なので、ぜひ手にとって読んでみてください。

Djangoでメールを送信する4ステップ

メールを送信するための4ステップは下記のとおりです。

  1. settings.pyでメール送信のための設定
  2. メールを送信する関数を定義する
  3. 関数をview関数内で使用する
  4. テンプレートで送信ボタンを実装する

一つずつ見ていきましょう。

settings.pyでメール設定

EMAIL_HOST = '<smtpサーバー>'
EMAIL_HOST_USER = '<デフォルトのEmailアドレス>'
EMAIL_HOST_PASSWORD = 'メールサーバーのパスワード'
EMAIL_PORT = '465' #メールサーバーで指定されているポート
EMAIL_USE_SSL = True #メールサーバーで確認
DEFAULT_FROM_EMAIL = '任意のメールアドレス'

お使いのメールサーバーにより、入力する情報は異なります。ご自身のサーバーのマイページをご覧ください。

メールを送信するための関数を定義

メール送信の関数は下記のステップが重要です。

  1. EmailMultiAlternativesオブジェクトの作成する
  2. 作成したオブジェクトにhtmlのコンテンツをattachする。
  3. sendメソッドで送信する

【コード例】

from django.core.mail import EmailMultiAlternatives

def send_email():
	mail_title="Eメールタイトル"
	text_content="""
            メール文章
			"""
	html_content=f"""
			<p><strong>※このメールに返信はできません</strong></p>
			<p>メール文章</p>
			"""

	msg=EmailMultiAlternatives(
			subject=mail_title, 
			body=text_content, 
			from_email=admin_email, 
			to=[admin_email],
			reply_to=[]
			)
	msg.attach_alternative(html_content,"text/html")
	msg.send()

Djangoにはほかにも関数が用意されています。

詳しくは以下の記事にて実例付きで解説しています。

関数とviews.pyを紐付ける

定義した関数をviews.pyで使用します。

下記の通り、①views.py②urls.pyでそれぞれ定義していきます。

views.py

#send_emailをインポートします

def sent_email(request):
    template_name = "accounts/sent_email.html"

    if 'email'in request.POST:
        send_email()

    return render(request, template_name)

urls.py

from .views import sent_email

urlpatterns = [
    .
    .
    .
    path("mail_sent/", sent_email, name="sent_mail")
]

送信ボタンの実装

送信ボタンを実装します。

また、送信完了後に表示すべきページもここで記述しておきます。

メール送信ボタンの実装

下記のボタンをテンプレートへ追記します。

    <form method="POST" action="{% url 'sent_mail' %}">{% csrf_token %}
        <button type="submit" name="email" value="sent">Button</button>
    </form>

送信完了ページ

送信後に表示したいページを下記に記述します。

accounts > sent_email.html

まとめ

当記事の内容をまとめます。

メールを送信するためには下記の4ステップが必要です。

  1. settings.pyでメール送信のための設定
  2. メールを送信する関数を定義する
  3. 関数をview関数内で使用する
  4. テンプレートで送信ボタンを実装する

また、メール送信の関数を作成する際は下記の3つを意識します。

  1. EmailMultiAlternativesオブジェクトの作成する
  2. 作成したオブジェクトにhtmlのコンテンツをattachする。
  3. sendメソッドで送信する

当記事では、プログラミングを独学している方やITを使って人生を変えたい!と思っている方へ情報発信をしています。

是非他の記事もご覧ください。

トップページ
ITC Mediaへようこそ! 当サイトは、「ITにChallengeしたい人に向けた学習サイト」です。 プログラミングが好きで、アプリを作り続けて、IT業界への道を踏み出せた筆者が実際の体験を元に執筆しています。 ぜひご覧ください。 ✔D...
タイトルとURLをコピーしました