(最終更新月:2022年2月)
✔このような方へ向けて書かれた記事となります
「Djangoでメールを送信したいけど、どうやるかわからない。」
「でも、Django初心者だからできるか不安、、、」
✔当記事を通じてお伝えすること
- 【簡単!】Djangoでメールを送信する4ステップ|実例付
当記事を最後までご覧頂ければ、Djangoでメールを送信するための手順がわかります。また、実際のコード例も記載してますので、コピペすることにより実装時間の短縮となります。
Djangoでメールを送信する4ステップ
メールを送信するための4ステップは下記のとおりです。
- settings.pyでメール送信のための設定
- メールを送信する関数を定義する
- 関数をview関数内で使用する
- テンプレートで送信ボタンを実装する
一つずつ見ていきましょう。
settings.pyでメール設定
EMAIL_HOST = '<smtpサーバー>'
EMAIL_HOST_USER = '<デフォルトのEmailアドレス>'
EMAIL_HOST_PASSWORD = 'メールサーバーのパスワード'
EMAIL_PORT = '465' #メールサーバーで指定されているポート
EMAIL_USE_SSL = True #メールサーバーで確認
DEFAULT_FROM_EMAIL = '任意のメールアドレス'
お使いのメールサーバーにより、入力する情報は異なります。ご自身のサーバーのマイページをご覧ください。
メールを送信するための関数を定義
メール送信の関数は下記のステップが重要です。
- EmailMultiAlternativesオブジェクトの作成する
- 作成したオブジェクトにhtmlのコンテンツをattachする。
- 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ステップが必要です。
- settings.pyでメール送信のための設定
- メールを送信する関数を定義する
- 関数をview関数内で使用する
- テンプレートで送信ボタンを実装する
また、メール送信の関数を作成する際は下記の3つを意識します。
- EmailMultiAlternativesオブジェクトの作成する
- 作成したオブジェクトにhtmlのコンテンツをattachする。
- sendメソッドで送信する
当記事では、プログラミングを独学している方やITを使って人生を変えたい!と思っている方へ情報発信をしています。
是非他の記事もご覧ください。
トップページ
ITC Mediaへようこそ! 当サイトは、「ITにChallengeしたい人に向けた学習サイト」です。 プログラミングが好きで、アプリを作り続けて、IT業界への道を踏み出せた筆者が実際の体験を元に執筆しています。 ぜひご覧ください。 ✔D...