このチュートリアル(https://www.boxcontrol.net/adding-contact-form-to-your-site-using-flask-and-python3.html)に従うことにしましたが、ユーザーが個人情報を入力し、私のGメールアカウント。しかし、フォームを送信した後、私は電子メールまたはエラーは受信しません。
最初に私がやったことは、ContactFormクラスを作成することでした。ユーザーがフォームを送信したときに電子メールを送信しないFlask-WTFフォーム
from flask_wtf import Form
from wtforms import TextField, TextAreaField, SubmitField
from wtforms.validators import InputRequired
class ContactForm(Form):
name = TextField("Fullname", validators=[InputRequired('Please enter your name.')])
email = TextField("Email", validators=[InputRequired("Please enter your email address.")])
NoChildren = TextField("Number of children dependants (if applicable):", validators=[InputRequired("Please enter a subject.")])
NoAdults = TextField("Number of adult dependants (if applicable):", validators=[InputRequired("Please enter a subject.")])
travel = TextField("Will you be travelling alone?", validators=[InputRequired("Please enter a subject.")])
marriage = TextField("What is your marital status?", validators=[InputRequired("Please enter a subject.")])
nation = TextField("Current nationality(ies):", validators=[InputRequired("Please enter a subject.")])
dob = TextField("Date of birth:", validators=[InputRequired("Please enter a subject.")])
phone = TextField("Phone number:", validators=[InputRequired("Please enter a subject.")])
nonukaddress = TextField("Your current non-UK address:", validators=[InputRequired("Please enter a subject.")])
ukaddress = TextField("UK address:", validators=[InputRequired("Please enter a subject.")])
history = TextField("Do you have any criminal history?", validators=[InputRequired("Please enter a subject.")])
hadvisa = TextField("Have you ever had any other visas?", validators=[InputRequired("Please enter a subject.")])
refusevisa = TextField("Have you been refused a visa before?", validators=[InputRequired("Please enter a subject.")])
medical = TextField("Did you receive any medical treatment in the UK?", validators=[InputRequired("Please enter a subject.")])
letter = TextField("Do you have a letter from a UK regulated financial institution confirming that original evidence of funds has been supplied?", validators=[InputRequired("Please enter a subject.")])
sole = TextField("Are you the sole owner of the money?", validators=[InputRequired("Please enter a subject.")])
additional = TextAreaField("Additional information/questions/requests:", validators=[InputRequired("Please enter a message.")])
submit = SubmitField("Send")
次に、フォーム用のHTMLテンプレートを作成しました。
{% block content %}
<h2>Contact</h2>
{% if success %}
<p>Thank you for your message. We'll get back to you shortly.</p>
{% else %}
{% for message in form.name.errors %}
<div class="flash">{{ message }}</div>
{% endfor %}
{% for message in form.email.errors %}
<div class="flash">{{ message }}</div>
{% endfor %}
<form action="{{ url_for('contact') }}" method=post>
{{ form.hidden_tag() }}
{{ form.name.label }}
{{ form.name }}
{{ form.email.label }}
{{ form.email }}
{{ form.NoChildren.label }}
{{ form.NoChildren }}
{{ form.travel.label }}
{{ form.travel }}
{{ form.marriage.label }}
{{ form.marriage }}
{{ form.nation.label }}
{{ form.nation }}
{{ form.dob.label }}
{{ form.dob }}
{{ form.phone.label }}
{{ form.phone }}
{{ form.nonukaddress.label }}
{{ form.nonukaddress }}
{{ form.ukaddress.label }}
{{ form.ukaddress }}
{{ form.history.label }}
{{ form.history }}
{{ form.hadvisa.label }}
{{ form.hadvisa }}
{{ form.refusevisa.label }}
{{ form.refusevisa }}
{{ form.parents.label }}
{{ form.parents }}
{{ form.medical.label }}
{{ form.medical }}
{{ form.letter.label }}
{{ form.letter }}
{{ form.sole.label }}
{{ form.sole }}
{{ form.ukbank.label }}
{{ form.ukbank }}
{{ form.additional.label }}
{{ form.additional }}
{{ form.submit }}
</form>
{% endif %}
{% endblock %}
私のメインフラスコファイルは、このように見えます。
from flask import Flask, render_template, request, flash
from forms import ContactForm
from flask_mail import Message, Mail
import os
mail = Mail()
app = Flask(__name__)
app.secret_key = 'development key'
app.config["MAIL_SERVER"] = "smtp.gmail.com"
app.config["MAIL_PORT"] = 465
app.config["MAIL_USE_SSL"] = True
app.config["MAIL_USERNAME"] = '[email protected]'
app.config["MAIL_PASSWORD"] = '*******'
mail.init_app(app)
@app.route('/')
def index():
return render_template('index.html')
@app.route('/contact', methods=['GET', 'POST'])
def contact():
form = ContactForm()
if request.method == 'POST':
if form.validate() == False:
flash('All fields are required.')
return render_template('contact.html', form=form)
else:
msg = Message(form.subject.data, sender='[email protected]', recipients=['[email protected]'])
msg.body = """
From:%s <%s>,
%s
""" % (form.name.data, form.email.data, form.message.data,form.NoChildren.data,form.travel.data,form.marriage.data, form.nation.data, form.dob.data, form.phone.data, form.nonukaddress.data, form.ukaddress.data, form.history.data, form.hadvisa.data, form.refusevisa.data, form.parents.data, form.medical.data, form.letter.data, form.sole.data, form.ukbank.data, form.additional.data)
mail.send(msg)
return render_template('contact.html', success=True)
elif request.method == 'GET':
return render_template('contact.html', form=form)
if __name__ == '__main__':
app.run()