Cara Membuat Aplikasi Download Dokumen dari Email Secara Otomatis dengan Python lengkap dengan Prompt untuk ChatGPT


Mengelola dan mengolah data dari email bisa menjadi tugas yang membosankan, terutama jika Anda menerima banyak lampiran setiap hari. Dalam artikel ini, kami akan menunjukkan cara membuat aplikasi ini menggunakan Python, dengan bantuan dari ChatGPT.

Langkah-langkah Utama

  1. Mengunduh Lampiran Email Berdasarkan Kata Kunci
  2. Menyimpan Lampiran ke Folder Berdasarkan Pengirim
  3. Mengekstrak Teks dari PDF
  4. Menyimpan Data yang Diekstraksi ke File CSV

Alat dan Perpustakaan yang Diperlukan

  • Python
  • Perpustakaan Python: imaplib, email, PyPDF2, pandas, dan os

1. Mengunduh Lampiran Email Berdasarkan Kata Kunci

Pertama, kita akan menggunakan perpustakaan imaplib dan email untuk menghubungkan ke server email dan mengunduh lampiran berdasarkan kata kunci tertentu. Berikut adalah fungsi untuk mengunduh lampiran dari email yang berisi kata kunci "kip kuliah":

python
import imaplib import email from PyPDF2 import PdfReader import pandas as pd from email.header import decode_header import os def download_attachments(username, password, keyword, base_path): try: mail = imaplib.IMAP4_SSL("imap.gmail.com") mail.login(username, password) mail.select("inbox") status, messages = mail.search(None, f'(BODY "{keyword}")') if status != 'OK': print(f"Error searching emails with keyword: {keyword}") return email_ids = messages[0].split() for email_id in email_ids: status, msg_data = mail.fetch(email_id, "(RFC822)") if status != 'OK': print(f"Error fetching email ID {email_id}") continue for response_part in msg_data: if isinstance(response_part, tuple): msg = email.message_from_bytes(response_part[1]) sender_email = email.utils.parseaddr(msg['From'])[1] sender_folder = os.path.join(base_path, sender_email) if not os.path.exists(sender_folder): os.makedirs(sender_folder) if msg.get_content_maintype() == 'multipart': for part in msg.walk(): if part.get_content_maintype() == 'multipart': continue if part.get('Content-Disposition') is None: continue file_name = part.get_filename() if file_name: file_name = decode_header(file_name)[0][0] if isinstance(file_name, bytes): file_name = file_name.decode(errors='replace') file_path = os.path.join(sender_folder, file_name) with open(file_path, "wb") as f: f.write(part.get_payload(decode=True)) mail.logout() except Exception as e: print(f"An error occurred: {e}")

2. Menyimpan Lampiran ke Folder Berdasarkan Pengirim

Kode di atas menyimpan setiap lampiran ke subfolder yang diberi nama sesuai dengan alamat email pengirim. Misalnya, lampiran dari juangtechno@gmail.com akan disimpan di D:/Downloads/juangtechno@gmail.com.

3. Mengekstrak Teks dari PDF

Setelah lampiran diunduh, kita dapat mengekstrak teks dari file PDF menggunakan PyPDF2. Berikut adalah fungsi untuk mengekstrak teks dari PDF:

python
def extract_text_from_pdf(pdf_path): try: with open(pdf_path, "rb") as file: reader = PdfReader(file) text = "" for page in reader.pages: text += page.extract_text() return text except Exception as e: print(f"Error reading PDF {pdf_path}: {e}") return ""

4. Menyimpan Data yang Diekstraksi ke File CSV

Data yang diekstraksi kemudian disimpan ke file CSV menggunakan pandas:

python
def save_data_to_csv(data, csv_path): try: df = pd.DataFrame(data) df.to_csv(csv_path, index=False, encoding='utf-8') except Exception as e: print(f"Error saving data to CSV: {e}")

Workflow Utama

Berikut adalah kode lengkap untuk mengunduh lampiran, mengekstrak teks, dan menyimpan data ke CSV:

python
# Main Workflow username = "alamat email anda" password = "kata_sandi_aplikasi_anda" keyword = "kip kuliah" base_path = "D:/Downloads" # Ganti dengan path yang benar csv_path = "D:/Downloads/data.csv" # Ganti dengan path yang benar # Step 1: Download Attachments download_attachments(username, password, keyword, base_path) # Step 2: Extract Data from PDFs (assuming all files are PDFs) data = {"Nama": [], "Alamat": [], "Nilai": []} for sender_folder in os.listdir(base_path): sender_path = os.path.join(base_path, sender_folder) if os.path.isdir(sender_path): for pdf_file in os.listdir(sender_path): if pdf_file.endswith(".pdf"): pdf_path = os.path.join(sender_path, pdf_file) pdf_text = extract_text_from_pdf(pdf_path) # Process the extracted text to fill the data dictionary # This is a placeholder, you need to parse the pdf_text to extract actual data data["Nama"].append("Extracted Name") data["Alamat"].append("Extracted Address") data["Nilai"].append(100) # Example value # Step 3: Save Data to CSV save_data_to_csv(data, csv_path)

Dengan mengikuti panduan ini, Anda dapat membuat aplikasi yang secara otomatis mengunduh lampiran dari email, mengatur file dalam folder berdasarkan pengirim, mengekstrak data dari PDF, dan menyimpannya dalam file CSV. Ini sangat membantu dalam mengelola dan mengolah data dalam jumlah besar dengan efisien.

Jika Anda memiliki pertanyaan atau butuh bantuan lebih lanjut, jangan ragu untuk meninggalkan komentar.

Prompt untuk ChatGPT

Untuk mendapatkan bantuan dari ChatGPT dalam membuat aplikasi ini, berikut adalah prompt yang bisa Anda gunakan:

kotlin
Bantu saya membuat aplikasi Python untuk mengunduh lampiran email secara otomatis berdasarkan kata kunci, menyimpan file dalam folder berdasarkan pengirim, mengekstrak teks dari file PDF, dan menyimpan data ke file CSV. Saya menggunakan perpustakaan imaplib, email, PyPDF2, dan pandas. Tolong berikan saya kode lengkap dengan penjelasan setiap langkahnya.

Dengan mengikuti langkah-langkah dan panduan di atas, Anda sekarang siap untuk mengotomatiskan proses pengunduhan dan pengolahan lampiran email dengan Python. Selamat mencoba!

0 Comments