Python memiliki modul bawaan yaitu smtplib dan modul email yang berguna untuk mengirim email. Kita akan menggunakan modul ini untuk mengirimkan pesan dari ekun email kita ke alamat email seseorang menggunakan Python. Dalam hal ini kita menggunakan contoh gmail. Untuk email dari provider lain, tinggal kita sesuaikan saja alamat server emailnya.
Email Tanpa Lampiran
Gmail memiliki fitur keamanan baru bernama “less secure apps”. Anda harus mengubahnya terlebih dahulu dari OFF ke ON pada akun gmail Anda untuk mengizinkan aplikasi Python mengakses email Anda.
Berikut source code Python untuk mengirim email tanpa lampiran.
import smtplib from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText fromaddr = "ALAMAT EMAIL PENGIRIM" toaddr = "ALAMAT EMAIL PENERIMA" msg = MIMEMultipart() msg['From'] = fromaddr msg['To'] = toaddr msg['Subject'] = "JUDUL PESAN" body = "ISI PESAN" msg.attach(MIMEText(body, 'plain')) server = smtplib.SMTP('smtp.gmail.com', 587) server.starttls() server.login(fromaddr, "PASSWORD EMAIL PENGIRIM") text = msg.as_string() server.sendmail(fromaddr, toaddr, text) server.quit()
Silahkan sesuaikan isi dari baris 5, 6, 10, 12, dan 17 sesuai dengan yang seharusnya. Ganti semua yang ditulis dalam huruf besar. Cobalah isi baris 5, dan 6 keduanya dengan alamat email milik Anda sendiri agar Anda bisa mengecek apakah pesannya sukses terkirim atau tidak. Setelah selesai, jalankan program dan periksa kotak masuk alamat email penerima.
Email Dengan Lampiran
Seringkali kita memiliki lampiran yang harus dikirimkan via email. Python bisa melampirkan berkas bersama dengan email yang akan Anda kirim. Sebelumnya Anda harus memastikan settingan “less secure apps” di akun gmail Anda sudah di ON kan.
Berikut source untuk mengirim email dengan lampiran di Python.
import smtplib from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText from email.mime.base import MIMEBase from email import encoders fromaddr = "ALAMAT EMAIL PENGIRIM" toaddr = "ALAMAT EMAIL PENERIMA" msg = MIMEMultipart() msg['From'] = fromaddr msg['To'] = toaddr msg['Subject'] = "JUDUL PESAN" body = "ISI PESAN" msg.attach(MIMEText(body, 'plain')) # Lampiran, sesuaikan nama filename dengan nama di attachment filename = "NAMA FILE" attachment = open("PATH KE FILE", "rb") part = MIMEBase('application', 'octet-stream') part.set_payload((attachment).read()) encoders.encode_base64(part) part.add_header('Content-Disposition', "attachment; filename= %s" % filename) msg.attach(part) server = smtplib.SMTP('smtp.gmail.com', 587) server.starttls() server.login(fromaddr, "PASSWORD EMAIL PENGIRIM") text = msg.as_string() server.sendmail(fromaddr, toaddr, text) server.quit()
Sesuaikan isi dari baris ke 7, 8, 14, 16, 21, 22, dan 33. Untuk nama file lampiran pada baris ke 21, harus sama dengan nama file pada baris ke 22 agar file tidak corrupt. Misalnya, baris ke 21 isinya dibuat filename = "mydoc.docx"
dan baris ke 22 dibuat attachment = open("D:\\dokumenku\\mydoc.docx", "rb")
. Setelah selesai, silahkan coba program Anda apakah sudah bisa mengirimkan email.
Contoh di atas hanyalah dasar pengiriman email di Python. Program tersebut tentu saja dapat dikembangkan. Misalnya, alamat email, password, dan pesannya dibuat dengan meminta input user dan bukan di hard coding pada kode program. Juga bisa dibuatkan Graphical User Interface (GUI) nya menggunakan aplikasi pembuat GUI di Python seperti tkinter, wxpython, pyqt, dan lain sebagainya.
Bila ada pertanyaan, silahkan ditinggalkan di kolom komentar.
PermissionError: [Errno 13] Permission denied: ‘D:…………..
cara mengatasinya bagaimana ya.. Terimakasih
kapan munculnya, saat dieksekusikah?
Kan sah ada di bacaan mas..
“Sebelumnya Anda harus memastikan settingan “less secure apps” di akun gmail Anda sudah di ON kan.”
mas saya mau tanya saya sudah modif itu email tapi menggunakan mode input. menjadi begini :
#Latihan Ngirim Email pakai Python
#
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
epengirim = input(“Masukkan Email Pengirim: “)
epenerima = input(“Masukkan Email Penerima: “)
judulemail = input(“Judul Email: “)
isipesan = input(“Isi Pesan: “)
passwordemail = input(“Password Email: “)
fromaddr = “{0}”
toaddr = “{1}”
msg = MIMEMultipart()
msg[‘From’] = fromaddr
msg[‘To’] = toaddr
msg[‘Subject’] = “{2}”
body = “{3}” .format(isipesan)
msg.attach(MIMEText(body, ‘plain’))
server = smtplib.SMTP(‘smtp.gmail.com’, 587)
server.starttls()
server.login(fromaddr, “{4}”)
text = msg.as_string()
server.sendmail(fromaddr, toaddr, text)
server.quit()
akan tetapi tidak berhasil. saya pingin kita memasukannya secara manual bukan di tulis di dalam scriptnya.
trus 1 lagi mas jika berkenan menjawab, jika berhasil dalam memasukkan password pas di input akan berubah menjadi terhide atau menjadi tanda bintang gitu penginnya. syukur jika di jawab, salam
kenapa file lampirannya corrupt ya, berubah menjadi 1kb.. cara ngatasinnya gimana min 🙁
sudah dipastikan penulisan path ke file lampirannya benar? coba lihat kodenya lagi.