Back

Cara Mengirim Email di Flask Menggunakan Flask-Email

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

aktivasi venv
aktivasi venv

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

  1. buat direktori bernama templates
  2. 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

less-secure
less-secure

lalu setting POP/IMAP pada gmail di gmail disini

setting-pop-imap
setting-pop-imap

Project Testing

jalankan project yang sudah dibuat dengan perintah

FLASK_APP=app.py FLASK_DEBUG=1 flask run

test-project1
test-project1

test-project2
test-project2

test-project3
test-project3

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)

Referensi

comments powered by Disqus
Built with Hugo
Theme Stack designed by Jimmy