cara extract data dari gmail dengan python

Cara Extract Data dari Gmail dengan Python

Pada tutorial kali ini, kita akan melakukan extract email dengan menggunakan Python. Untuk email yang kita gunakan kali ini yaitu gmail. Jadi, buat kalian yang tidak mempunyai akun gmail harap buat terlebih dahulu.

Disini kita akan menggunakan library imaplib untuk mendapatkan data dari gmail dengan menggunakan protokol IMAP. Internet Message Access Protocol (IMAPv4) sendiri adalah protokol internet yang memungkinkan kita mengakses pesan email dari mailboxes. Bahkan memungkinkan kita memindahkan email antar kotak surat, membuat direktori di dalam kotak surat, menandai email sebagi yang telah terbaca/belum dibaca, menandai email yang penting, mencari email, dll.

Sebelum kita melakukan extract email dengan menggunakan Python, kita pelu membuat app password untuk akun gmail yang digunakan dalam extraksi data.

Membuat App Password untuk Gmail

Pertama login ke akun gmail yang nantinya digunakan dalam extract email.

Selanjutnya, klik photo profil gmail kalian disebelah pojok kanan. Kemudian pilih Kelola Akun Google Anda.

Setelah itu, aktifkan Verifikasi 2 Langkah. Jika sudah klik Sandi Aplikasi.

Kemudian akan muncul tampilan seperti berikut. Lalu pilih aplikasi menjadi Email dan piling perangkat menjadi Komputer Windows.

cara extract email dengan python

Terakhir, copy password yang barusan tergenerate seperti gambah dibawah.

cara extract email dengan python

Extract Email dengan Imaplib

Pertama kita install library imaplib dengan perintah berikut, lalu pastekan ke dalam terminal kalian.

pip install imaplib

Setelah berhasil terinstall, kita buat file main.py dan buka file tersebut dengan text editor kesukaan kalian. Disini kita import 2 library yang nantinya digunakan yaitu imaplib dan email.

import imaplib
import email

Selanjutnya, kita membuat koneksi antara IMAP4 dengan gmail. Disini karena kita akan mengextract data dari gmail maka kita gunakan host-nya yaitu “imap.gmail.com”.

with imaplib.IMAP4_SSL(host="imap.gmail.com", port=imaplib.IMAP4_SSL_PORT) as imap_ssl:
    print("Connection Object : {}".format(imap_ssl))

Setelah koneksinya antara IMAP4 dengan gmail terhubung, kemudian kita akan melakukan login dengan akun gmail kita. Disini kalian isi “[email protected]” dengan gmail kalian dan “app_password” dengan password yang telah kita buat tadi diawal.

print("Logging into mailbox...")
resp_code, response = imap_ssl.login("[email protected]", "app_password")

print("Response Code : {}".format(resp_code))
print("Response      : {}\n".format(response[0].decode()))

Selanjutnya kita set mailbox dan kita akan menerima semua pesan yang terdapat di directory.

resp_code, mail_count = imap_ssl.select(mailbox="ELITMUS", readonly=True)
imap_ssl.select()

resp_code, mail_ids = imap_ssl.search(None, "ALL")

print("Mail IDs : {}\n".format(mail_ids[0].decode().split()))

Kemudian kita akan menampilkan pesan tersebut dari pengirim, penerima, bcc, tanggal email, subject dan pesan email. Terakhir, kita tutup imap-nya dengan memanggil fungsi imap_ssl.close()

for mail_id in mail_ids[0].decode().split()[-2:]:
        print("================== Start of Mail [{}] ====================".format(mail_id))

        resp_code, mail_data = imap_ssl.fetch(mail_id, '(RFC822)') ## Fetch mail data.

        message = email.message_from_bytes(mail_data[0][1]) ## Construct Message from mail data
        print("From       : {}".format(message.get("From")))
        print("To         : {}".format(message.get("To")))
        print("Bcc        : {}".format(message.get("Bcc")))
        print("Date       : {}".format(message.get("Date")))
        print("Subject    : {}".format(message.get("Subject")))

        print("Body : ")
        for part in message.walk():
            if part.get_content_type() == "text/plain":
                body_lines = part.as_string().split("\n")
                print("\n".join(body_lines[:12])) ### Print first 12 lines of message

        print("================== End of Mail [{}] ====================\n".format(mail_id))

    
imap_ssl.close()

Jika sudah kalian gabungkan semua code diatas menjadi 1, lalu jalankan file tersebut. Nantinya kalian akan melihat pesan yang berhasil terextract yang akan ditampilkan di terminal kalian.

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top