フォームの入力内容の確認メール送信できない
解決したいこと
メールを送信すると下記の画面になります
例)
Flask でwebアプリを作ってみてる最中です
問い合わせフォームの内容をメールで送信する機能を作成する際にエラーが発生しました
解決方法を教えて下さい。
発生している問題・エラー
該当するソースコード
# loggingをインポート
import logging
import os
from email_validator import EmailNotValidError, validate_email
# Flaskクラスをインポート
from flask import (
Flask,
current_app,
flash,
g,
redirect,
render_template,
request,
url_for,
)
from flask_debugtoolbar import DebugToolbarExtension
from flask_mail import Mail, Message
# Flaskクラスをインスタンス化
app = Flask(__name__)
# secret_keyの追加
app.config["SECRET_KEY"] = "2AZSMss3p5QPbcY2hBssJ"
# ログレベルの設定
app.logger.setLevel(logging.DEBUG)
app.logger.debug("DEBUG")
app.logger.info("INFO")
app.logger.warning("WARNING")
app.logger.error("ERROR")
app.logger.critical("CRITICAL")
app.config["DEBUG_TB_INTERCEPT_REDIRECTS"] = False
toolbor = DebugToolbarExtension(app)
# URLと実行する関数をマッピング
@app.route("/")
def index():
return "Hello,Flaskbook!"
@app.route("/hello/<name>", methods=["GET", "POST"], endpoint="hello-endpoint")
def hello(name):
return f"Hello, {name}!"
@app.route("/name/<name>")
def show_name(name):
return render_template("index.html", name=name)
with app.test_request_context():
# /
print(url_for("index"))
# /hello/world
print(url_for("hello-endpoint", name="world"))
# /name/Rikuo?page=1
print(url_for("show_name", name="Rikuo", page="1"))
ctx = app.app_context()
ctx.push()
print(current_app.name)
g.connection = "connection"
print(g.connection)
with app.test_request_context("/users?update=ture"):
print(request.args.get("updated"))
@app.route("/contact")
def contact():
return render_template("contact.html")
@app.route("/contact/complete", methods=["GET", "POST"])
def contact_complete():
if request.method == "POST":
username = request.form["username"]
email = request.form["email"]
description = request.form["description"]
is_valid = True
if not username:
flash("ユーザ名は必須です")
is_valid = False
if not email:
flash("メールアドレスは必須です")
is_valid = False
try:
validate_email(email)
except EmailNotValidError:
flash("メールアドレスの形式で入力してください")
is_valid = False
if not description:
flash("問い合わせ内容は必須です")
is_valid = False
if not is_valid:
return redirect(url_for("contact"))
# メールを送る
send_email(
email,
"お問い合わせありがとうございました。",
"contact_mail",
username=username,
description=description,
)
flash("問い合わせ内容はメールにて送信しました。問い合わせありがとうございます。")
return redirect(url_for("contact_complete"))
return render_template("contact_complete.html")
def send_email(to, subject, template, **kwargs):
"""メールを送信する関数"""
msg = Message(subject, recipients=[to])
msg.body = render_template(template + ".txt", **kwargs)
msg.html = render_template(template + ".html", **kwargs)
mail.send(msg)
# Mailクラスのコンフィグを追加
app.config["MAIL_SERVER"] = os.environ.get("MAIL_SERVER")
app.config["MAIL_PORT"] = os.environ.get("MAIL_PORT")
app.config["MAIL_USE_TLS"] = os.environ.get("MAIL_USE_TLS")
app.config["MAIL_USERNAME"] = os.environ.get("MAIL_USERNAME")
app.config["MAIL_PASSWORD"] = os.environ.get("MAIL_PASSWORD")
app.config["MAIL_DEFAULT_SENDER"] = os.environ.get("MAIL_DEFAULT_SENDER")
mail = Mail(app)
自分で試したこと
きちんと読めてないだけかもしれませんが
エラー内容は見てみましたがわかりませんでした。
他に確認する必要があるページがあればおっしゃってください
0