たまにはエンジニアらしくしっかりした記事を
というわけでflaskといえば巷で大流行Pythonのお手軽フレームワークでございます。
環境構築等はここでは記載しませんのであしからず・・・
今回はフォーム入力した内容をGmailに送信する
といった内容です。
コード関連以外に用意するものは送信用と受信用(確認用)のgmailアカウント
<script language="JavaScript" type="text/JavaScript">
function check(){
if(window.confirm('送信してよろしいですか?')){
return true;
}
else{
window.alert('キャンセルされました');
return false; /
}
}
</script>
<form method="POST" enctype="multipart/form-data" onSubmit="return check()">
<div class="field">
<div for="name">お名前</div>
<input id="students_form" type="text" name="name" placeholder="あなたのお名前を入力してください" required title="must be alphanumeric in 6-12 chars">
</div>
<div>
<div for="league" required>好きなリーグは?</div>
<select name="league" required>
<option value="">選んでね</option>
<option value="プレミア">イングランドプレミアリーグ</option>
<option value="リーガ">ラリーガサンタンデール</option>
<option value="ブンデス">ブンデスリーガ</option>
<option value="セリエ">セリエA</option>
<option value="リーグアン">リーグアン</option>
</select>
</div>
<div>
<div for="message" required>自由記載</div>
<textarea name="about" required placeholder="好きなことを書いてね" onkeyup="count_down(this);"></textarea>
</div>
<button type="submit">送信</button>
</form>
CSS等は割愛。
なんてことはないtextフォームとプルダウン選択とtextareaのフォームに記載していくあるあるフォーム
from flask_mail import Mail
from email.mime.text import MIMEText
from flask import Flask, render_template, request
import smtplib
app = Flask(__name__)
@app.route("/form", methods=['GET','POST'])
def form():
if request.method == "POST":
from_email = 'send@gmail.com'
to_email = 'check@gmail.com'
account = 'send@gmail.com'
password = 'password'
subject = 'テスト送信'
name = request.form.get('name')
year = request.form.get('league')
about = request.form.get('about')
bodytext = "名前:" + name + "\n" + "好きなリーグ:" + year + "\n" + "自由記載:" + about
server = smtplib.SMTP('smtp.gmail.com', 587)
server.starttls()
server.login(account, password)
msg = MIMEText(bodytext)
msg['subject'] = subject
msg['From'] = from_email
msg['To'] = to_email
server.send_message(msg)
server.close()
return render_template('send.html', success=True)
return render_template("form.html")
@app.route("/send")
def send():
return render_template('send.html')
使用ライブラリはflask導入の上でほぼほぼ入ってくるもので、ここでは割愛
ポイントはメールを送信するうえで送信用のアカウントにログインして
そこからメールを送信するイメージなので、23行目以降の工程が必要となる
outlook等を使用したい場合は
“SMTP” “outlook”で検索すれば必要な設定値が確認できます。
といった具合にsmtplibやMIMETextを使用してメール本文を構築
送信後の画面は↓
<div class="send_main">
<h1>メッセージを送信しました</h1>
<input class="button-glow" type="button" value="戻る" onclick="history.back()" />
</div>
うまいこといけば
テスト送信
名前:XXXXXXXXX
好きなリーグ:XXXXXXX
自由記載:あああああああ
みたいな感じでメールが届きます。
ちなみに私はイングランドプレミアリーグ贔屓です。