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

i got it!Django

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

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

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

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

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

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

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

【著者プロフィール】

profile_icon
【Python歴】11年 x 【Django歴】10年
HP作成、社内システムの構築、コンサルティング

当ブログを通じて、Webアプリの書き方やアプリの公開方法までを解説しています。

☆日報アプリ「D-Repo」(デモ版)→こちら

※Djangoをベースに作成したアプリです。

☆便利ツールアプリ「Tool Station」→こちら

※Django REST frameworkとReactで作成しているアプリです。

✔月9,800円でWebデザインが学べる

デザナルは、Webデザインに苦手意識がある方におすすめのサブスク型スクールです。

特徴は以下の通り。

  • 初期費用不要
  • 教材が使い放題
  • 案件で収入も得られる

デザナルは稼ぎながら学べる、格安のWebデザインスクールです。

>>詳細はこちら<<

安い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ブログ | 今の自分にチャレンジする
新たな可能性にチャレンジしたいですか?当ブログでは、未経験の方がITへチャレンジするための情報を提供します。主には「Webアプリ開発」、新技術である「Web3.0」、「ブログ」についての記事となります。全て実体験に基づいた情報ですので、「これから新たなことを学びたい!」という方はぜひご覧いただければと思います。

当ブログでは、日報アプリ開発を通じて、Webアプリを一から開発し公開するまでを初学者の方でもわかるようにと記事を連載しています

「Djangoでのアプリ開発を学びたい!」
「Djangoで開発したアプリをWebで公開するにはどうするの?」

という方は必見です!

【Django】チュートリアル|日報アプリの開発から公開まで
Djangoのチュートリアルをお探しですか?具体的に「手を動かして作ってみたい!」という方へ向けて、誰でもできる簡易的な日報アプリの開発を通じて、Djangoの様々な機能に触れていくシリーズとなっています。PythonでWebアプリを作りたい方、必見の記事となります!

タイトルとURLをコピーしました