Cara menggunakan WWW.GMAIL.C pada Python

Module yang dapat digunakan untuk mengirim email pada python yang paling sering dipakai adalah kombinasi module smtplib dengan email. Selain itu ternyata ada module email lain yang dapat digunakan dengan sintaks yang lebih sederhana dan lebih mudah dipakai.

Module yagmail yang ditulis dan dikembangkan oleh Pascal van Kooten dibagikan di halaman githubnya : 

//github.com/kootenpv/yagmail//github.com/kootenpv/yagmail 

Dihalaman tsb dideskripsikan bahwa tujuan dari yagmail adalah 'The goal here is to make it as simple and painless as possible to send emails.' artinya dilarang makan sebelum berdoa

Seberapa sederhana kah sintaks nya? kira kira untuk mengirim email begini sintaks nya : 

import yagmail
yag = yagmail.SMTP[]
contents = ['This is the body, and here is just text //somedomain/image.png',
            'You can find an audio file attached.', '/local/path/song.mp3']
yag.send['', 'subject', contents]

Lebih sederhana lagi begini :

yagmail.SMTP['mygmailusername'].send['', 'subject', 'This is the body']

Install

Untuk bisa menggunakannya kita perlu menginstall dulu package nya kedalam python dengan perintah :
pip install yagmail[all]

Username dan password

Ada 2 opsi yang bisa digunaka untuk inisialisasi akun dan password gmail yang bisa kita gunakan, yaitu :
1. Login dengan menginisialisasikan akun dan password dalam kode program

yag = yagmail.SMTP['mygmailusername', 'mygmailpassword']

2. Login dengan akun dan password tersimpan dalam keyring python

import yagmail
yagmail.register['mygmailusername', 'mygmailpassword']


Untuk cara kedua ini jauh lebih aman karena kita hanya satu kali menginisialisasikan nya, dan untuk seterusnya tidak diperlukan lagi karena sudah tersimpan dalam keyring. Artinya tidak perlu menulis akun dan email didalam kode program python.

Memulai koneksi

yag = yagmail.SMTP['mygmailusername']

Mulai mengirim

import yagmail
yag = yagmail.SMTP[]
contents = ['This is the body, and here is just text //somedomain/image.png',
            'You can find an audio file attached.', '/local/path/song.mp3']
yag.send['', 'subject', contents]

  • Perintah yag.send terdiri dari yag.send['alamat ','subjek email','isi email'] Pada variable contents dapat sekaligus didefinisikan konten/isi email, dan lokasi file attachment
  • Untuk konten juga bisa mengandung skrip html, contents = "

    An HTML Title

    Please find files attached"

ERROR

  • Bad Credentials : aktifkan setingan less secure apps google disini 
  • FileNotFoundError: [Errno 2] No such file or directory: 'C:\Users\user/.yagmail', cari file sender.py di folder liblary python 'C:\Users\Username\AppData\Local\Programs\Python\Python37\Lib\site-packages\yagmail kemudian buka dengan IDLE dan edit bagian user = find_user_home_path[] menjadi user = ''


Selamat mencoba ya! ^^

Jika ada kesulitan silahkan dikomen, kalo saya gabisa silahkan tanya Pascal Van kooten..hehe

referensi : //kootenpv.github.io/2016-04-24-yagmail

Cara mudah kirim email menggunakan SMTP Gmail di Flask Python

Hello fellas, kembali lagi bersama saya, Kiddy. Pada artikel kali ini saya mau berbagi insight mengenai cara mengirimkan email menggunakan Flask Python.

Kalo agan sudah membuka tutorial ini saya anggap agan udah paham konsep SMTP dan sudah pernah mencobanya di Laravel ya, jadi kalo bingung jangan salahkan saya xixixi.

Ohiya, di tutorial ini saya pake projek ini, jadi saya sarankan agan mengclone dari repo saya, kalo agan mau agak “wild” dan udah paham konsep programming dengan baik diskip aja ngga apa hehehe.

Pertama, jangan lupa aktivasi virtualenv nya dulu.

Kedua, install library-nya dengan cara:

pip install Flask-Mail

Kita akan menggunakan Flask-Mail salah satu library sakti yang digunakan buat Flask.

Ketiga, __init__.py kita mesti dimodif sedikit dulu untuk inisialisasi Mail-nya.

from flask_mail import Mail

app = Flask[__name__]

mail = Mail[app]

Khusus untuk tutorial ini, saya akan membuat kasus dimana pengguna akan mendapatkan email saat mendaftarkan diri melalui api /users [POST].

Jangan lupa menambahkan konfigurasi Mail kita di config.py.

MAIL_SERVER = str[os.environ.get["MAIL_SERVER"]]
MAIL_PORT = str[os.environ.get["MAIL_PORT"]]
MAIL_USERNAME = str[os.environ.get["MAIL_USERNAME"]]
MAIL_PASSWORD = str[os.environ.get["MAIL_PASSWORD"]]
MAIL_USE_TLS = True
MAIL_USE_SSL = False

Sekarang kita buat sebuah folder bernama templates didalam folder app, gunanya untuk menyimpan template milik kita.

Nah, sekarang kita buat sebuah file baru bernama mail.html didalam folder templates, lalu paste codenya dibawah ini.










#outlook a {
padding: 0;
}

body {
margin: 0;
padding: 0;
-webkit-text-size-adjust: 100%;
-ms-text-size-adjust: 100%;
}

table,
td {
border-collapse: collapse;
mso-table-lspace: 0pt;
mso-table-rspace: 0pt;
}

img {
border: 0;
height: auto;
line-height: 100%;
outline: none;
text-decoration: none;
-ms-interpolation-mode: bicubic;
}

p {
display: block;
margin: 13px 0;
}






@import url[//fonts.googleapis.com/css?family=Open+Sans:300,400,500,700];



@media only screen and [min-width:480px] {
.mj-column-per-100 {
width: 100% !important;
max-width: 100%;
}
}





















Welcome aboard




























Dear {{ name }}

Welcome to {{ app_name }}.


We're really excited you've decided to give us a try. In case you have any questions, feel free to reach out to us at {{ app_contact }}. You can login to your account with your email {{ email }}


Thanks,
The {{ app_name }} Team








Ohiya, untuk web ini dibuat dengan MJML. Web framework yang bisa membuat email responsif dengan gampang, disarankan banget pake ini, karena templatenya pun banyak!

Kalo mau pake templatenya tinggal klik aja disini.

Sekarang kita masuk ke bagian codenya, silahkan ubah sedikit di UserController.py pada method store[].

def store[]:
try:
name = request.json['name']
email = request.json['email']
password = request.json['password']

users = Users[name=name, email=email]
users.setPassword[password]
db.session.add[users]
db.session.commit[]

msg = Message["Hello, {} welcome to Belajar Flask Python".format[name],
sender=""]
msg.add_recipient[email]
# msg.body = "testing"
msg.html = render_template['mail.html', app_name="Learn Flask with Kiddy", app_contact="",
name=name, email=email]
mail.send[msg]

return response.ok['', 'Successfully create data!']

except Exception as e:
print[e]

Jangan lupa import si librarnya.

from app import mail
from flask_mail import Message
from flask import render_template

Tak jelasin dulu deh. Pertama kita inisialisasi object Message kedalam variable msg. Disana kita masukkan “Hello, {} welcome to Belajar Flask Python” sebagai Title email, dan sendernya siapa, tapi karena kita menggunakan Gmail, otomatis sendernya ya si email yang mengirim, kecuali kita pake service 3rd party seperti Mailgun, atau Sendgrid.

Berpacu pada dokumentasi //pythonhosted.org/Flask-Mail/

Kedua, pada saat inisialisasi class Message, sebenernya kita bisa nginput recipients lebih dari satu dengan menggunakan default array.

You can set the recipient emails immediately, or individually:

msg.recipients = [""]
msg.add_recipient[""]

Yang dimana kita sebenrnya bisa set penerimanya duluan, atau satu-satu, kalo mau bulk [sekaligus] ya pakein array. Kita juga bisa put recipients di constructor si Message, kalo kita put di konstruktor recipientsnya wajib ARRAY.

msg = Message["Hello",
sender="",
recipients=[""]]

If the sender is a two-element tuple, this will be split into name and address:

msg = Message["Hello",
sender=["Me", ""]]

Nah kita bisa nih namain si Sender Alias pengirim dengan nama sesuka kita, tapi inget karena kita pake Gmail, pengirimnya pasti si akun Gmailnya ini, kecuali pake SMTP pihak ketiga.

If you have set MAIL_DEFAULT_SENDER you don’t need to set the message sender explicity, as it will use this configuration value by default.

Kalo di Config class kita ada MAIL_DEFAULT_SENDER, maka si Sendernya ngga perlu kita inisialisasi lagi gaes.

Sedangkan, msg.body yang saya comment tuh gunanya cuma buat RAW Email aja, but since kita pake template ya kita comment aja, ngga perlu saya jelasin kan bedanya raw email dengan html email?

# msg.body = "testing"

Finally, to send the message, you use the Mail instance configured with your Flask application:

mail.send[msg]

Nah ini fungsi yang akan menjalankan si emailnya, kalo agan perhatikan nanti di command console kalian keliatan kok processnya.

Proses pengiriman email SMTP dengan Gmail

Sebelum nyoba kita wajib nambahin dulu di .flaskenv kita beberapa parameter tambahan yaitu:

MAIL_SERVER=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=
MAIL_PASSWORD=xxx

Nah sebelum digas perhatikan dulu. Kalo agan pernah mengikuti tutorial saya yang ngirim email pake Laravel disini

Disitu saya jelaskan kalo email yang digunakan wajib tidak menggunakan two step verification, karena kalo pake pasti error.

Setelah itu akun juga wajib dimatikan Less secure appnya. Bagi akun yang menggunakan two step verification pasti ngga akan bisa, seperit akun email saya yang lain.

Akun dengan two step verification.

Nah pastikan akun kalian tidak menggunakan two step verification dan nyalakan Less Secure App, gunanya adalah agar google bisa berkomunikasi dengan layanan diluar, karena kita menggunakan SMTP-nya Gmail, ya ini wajib dinyalakan.

Less secure app ON

Dimana cara nyettingnya? Disini:

//myaccount.google.com/u/0/lesssecureapps?pageId=none

Kalo udah beres semua, sekarang kita coba aja nih.

Hasilnya akan nongol di Email kalian.

Mengirim email dengan SMTP Gmail

Hasil Email dari PC

Hasil email dari Hengpon.

Gampang toh? Iyalaaa~ Ngga pake ribet ngirim email dari Flask Python, malah cepat, gampang, dan pastinya Python punya performa yang ajib!

Ohiya kalo ada yang mau clone jangan sungkan untuk clone reponya disini, sudah saya update beserta Mail servicenya kok.

Sekian dari saya, hepi coding semuanya!

Bài mới nhất

Chủ Đề