pada materi kali ini kita akan belajar bagaimana cara mengirim email menggunakan flask
Sekilas Tentang Flask-Email
Flask-Mail adalah extensi Flask yang digunakan untuk mengirim e-mail baca dokumentasi
Project Prepairing
beberapa hal yang harus disiapkan sebelum membuat project ini diantaranya
Siapkan Virtual Environtment
saya asumsikan sudah menginstall python3, pada studi kasis kali ini saya menggunakan python3.7 buat virtualenv dengan perintah
python3.7 -m venv flaskEnv
lalu aktikan virtualenv dengan perintah
source flaskEnv/bin/activate
Install Requirement
langkah selanjutnya install require modul untuk project menggunakan pip dengan perintah
pip install flask Flask-Mail
gunakan perintah pip list untuk melihat module yang terinstall contoh setup project module seperti ini
Package Version
------------- -------
blinker 1.4
click 7.1.2
Flask 1.1.2
Flask-Mail 0.9.1
itsdangerous 1.1.0
Jinja2 2.11.2
MarkupSafe 1.1.1
pip 18.1
pkg-resources 0.0.0
setuptools 40.8.0
Werkzeug 1.0.1
lalu simpan buat requirements.txt dengan perintah
pip freeze >> requirements.txt
Coding Started
selelah setup project selesai langkah selanjutnya buat file .py contoh app.py setelah itu setup flask contoh klik disini
berikut template file yang akan dipakai pada project ini
Starter Templates
# import module
from flask import Flask
from flask_mail import Mail, Message
app = Flask(__name__)
# tempat config aplikasi
# membuat rute
if __name__=='__main__':
app.run(debug=True)
Config Flask-Email
lalu tambahkan config email
mail = Mail(app=app)
Membuat Rute
langkah selanjutnya membuat rute URL dalam kasus ini kita hanya membuat tiga rute sederhana untuk menampilkan halaman index dan halaman success dan rute untuk menghandle pengiriman pesan
@app.route('/')
def index():
return render_template('index.html')
@app.route('/send_message', methods=['GET', 'POST'])
def send_message():
if request.method == 'POST':
email = request.form['email']
subject = request.form['subject']
msg = request.form['message']
message = Message(subject, sender="email_pengirim@gmail.com", recipients=[email])
message.body = msg
mail.send(message)
success = "Message Send"
return render_template('result.html', success=success)
Setting Template Project
langkah selanjutnya kita setting template untuk project
- buat direktori bernama templates
- lalu buat dua file html dengan nama result.html dan index.html
hingga struktur project kita menjadi seperti ini
├── app.py
├── requirements.txt
└── templates
├── index.html
└── result.html
langkah selanjutnya isi file index.html contoh seperti ini
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Flask Sending Mail</title>
</head>
<body>
<h1>TEST FLASK SENDING EMAIL</h1>
<form action="{{url_for('send_message')}}" method="POST">
<input type="email" name="email" placeholder="E-mail">
<input type="text" name="subject" placeholder="Subject">
<textarea name="message" cols="30" rows="10" placeholder="Message Body"></textarea>
<input type="submit" value="Send Message">
</form>
</body>
</html>
langkah selanjutnya isi file result.html
<h1>{{success}}</h1>
<a href="{{url_for('index')}}">Go To Home</a>
Flask-Email Config
langkah selanjutnya setting flask-email untuk project seperti ini
pp.config['MAIL_SERVER'] = "smtp.gmail.com"
app.config['MAIL_PORT'] = 465
app.config['MAIL_USERNAME'] = "email_kamu@gmail.com"
app.config['MAIL_PASSWORD'] = "PasswordEmailKamu"
app.config['MAIL_USE_TLS'] = False
app.config['MAIL_USE_SSL'] = True
Setting Email Address Google
aktikan Less secure app access disini
lalu setting POP/IMAP pada gmail di gmail disini
Project Testing
jalankan project yang sudah dibuat dengan perintah
FLASK_APP=app.py FLASK_DEBUG=1 flask run
Final Code
yap project selesai ini final codenya
# import module
from flask import Flask, request, render_template
from flask_mail import Mail, Message
app = Flask(__name__)
# tempat config aplikasi
app.config['MAIL_SERVER'] = "smtp.gmail.com"
app.config['MAIL_PORT'] = 465
app.config['MAIL_USERNAME'] = "email_kamu@gmail.com"
app.config['MAIL_PASSWORD'] = "PasswordEmailKamu"
app.config['MAIL_USE_TLS'] = False
app.config['MAIL_USE_SSL'] = True
# config mail
mail = Mail(app=app)
# membuat rute
@app.route('/')
def index():
return render_template('index.html')
@app.route('/send_message', methods=['GET', 'POST'])
def send_message():
if request.method == 'POST':
email = request.form['email']
subject = request.form['subject']
msg = request.form['message']
message = Message(subject, sender="email_pengirim@gmail.com", recipients=[email])
message.body = msg
mail.send(message)
success = "Message Send"
return render_template('result.html', success=success)
if __name__ == '__main__':
app.run(debug=True)