📌 Baca Juga (Scripting & Automation): Membangun Bot Telegram Pintar dengan LangChain dan Python untuk Manajemen Proyek
Rahasia Otomatisasi Email dengan AI: Skrip Python yang Mengkategorikan, Meringkas, & Membalas Email Secara Cerdas!
Di era kerja remote dan volume pesan yang terus meningkat, otomatisasi email AI menjadi senjata rahasia bagi profesional yang ingin menghemat waktu. Artikel ini membongkar cara membangun skrip Python email lengkap—dari IMAP & SMTP hingga LLM email analysis—yang dapat mengategorikan, meringkas, dan membalas email secara cerdas. Semua contoh kode dapat langsung dijalankan di kodeai.my.id dan siap dipasang di server pribadi atau layanan cloud.
1. Mengapa Otomatisasi Email dengan AI Penting?
- Volume tinggi: Rata‑rata pekerja profesional menerima 100+ email per hari.
- Prioritas yang berubah‑ubah: Tanpa bantuan, email penting sering terlewat.
- Waktu respons: Balasan cepat meningkatkan kepuasan pelanggan dan kredibilitas.
- Analisis konten: LLM (Large Language Model) dapat mengekstrak intent, deadline, atau tindakan yang diperlukan.
Dengan menggabungkan AI email summarizer dan auto reply email AI, Anda tidak hanya mengurangi beban inbox, tetapi juga menciptakan jejak digital yang terstruktur melalui SQLite email log.
2. Persiapan Lingkungan
- Pastikan Python 3.9+ terinstal.
- Instal paket yang dibutuhkan:
pip install imaplib2 smtplib email python-dotenv openai sqlite3
Gunakan file .env untuk menyimpan kredensial secara aman:
IMAP_HOST=imap.gmail.com IMAP_USER=youremail@gmail.com IMAP_PASS=your_app_password SMTP_HOST=smtp.gmail.com SMTP_PORT=587 SMTP_USER=youremail@gmail.com SMTP_PASS=your_app_password OPENAI_API_KEY=sk-...
3. Membuka Koneksi IMAP & SMTP
3.1 Koneksi IMAP untuk Membaca Email
Berikut contoh fungsi sederhana yang mengembalikan daftar pesan belum terbaca:
import imaplib
import email
import os
from dotenv import load_dotenv
load_dotenv()
def fetch_unread():
imap = imaplib.IMAP4_SSL(os.getenv('IMAP_HOST'))
imap.login(os.getenv('IMAP_USER'), os.getenv('IMAP_PASS'))
imap.select('INBOX')
status, data = imap.search(None, 'UNSEEN')
mail_ids = data[0].split()
messages = []
for num in mail_ids:
typ, msg_data = imap.fetch(num, '(RFC822)')
raw = msg_data[0][1]
msg = email.message_from_bytes(raw)
messages.append(msg)
imap.logout()
return messages
3.2 Koneksi SMTP untuk Mengirim Balasan
import smtplib
from email.mime.text import MIMEText
def send_reply(to_addr, subject, body):
msg = MIMEText(body, 'plain')
msg['Subject'] = f"Re: {subject}"
msg['From'] = os.getenv('SMTP_USER')
msg['To'] = to_addr
server = smtplib.SMTP(os.getenv('SMTP_HOST'), int(os.getenv('SMTP_PORT')))
server.starttls()
server.login(os.getenv('SMTP_USER'), os.getenv('SMTP_PASS'))
server.send_message(msg)
server.quit()
4. Menyimpan Log Email dengan SQLite
Log membantu melacak apa yang telah diproses, menghindari duplikasi, dan memberi data historis untuk analisis lebih lanjut.
import sqlite3
def init_db():
conn = sqlite3.connect('email_log.db')
cur = conn.cursor()
cur.execute('''
CREATE TABLE IF NOT EXISTS logs (
id TEXT PRIMARY KEY,
sender TEXT,
subject TEXT,
category TEXT,
summary TEXT,
replied INTEGER,
timestamp DATETIME DEFAULT CURRENT_TIMESTAMP
)
''')
conn.commit()
return conn
5. Kategorisasi Email Menggunakan AI
Untuk email categorization Python, kita dapat memanfaatkan model OpenAI GPT‑4o atau model lokal seperti llama.cpp. Berikut contoh permintaan (prompt) yang efektif:
import openai
def categorize_email(subject, body):
prompt = f"""Kategorikan email berikut ke dalam satu dari: [Pekerjaan, Penjualan, Dukungan, Pribadi, Spam].
Subject: {subject}
Body: {body[:500]} # hanya 500 karakter pertama untuk efisiensi
Berikan jawaban satu kata saja."""
response = openai.ChatCompletion.create(
model="gpt-4o-mini",
messages=[{"role": "user", "content": prompt}],
temperature=0
)
return response.choices[0].message.content.strip()
6. Merangkum Konten Email (AI Email Summarizer)
Ringkasan singkat membantu memutuskan prioritas tanpa membuka seluruh pesan.
def summarize_email(body):
prompt = f"""Berikan ringkasan 2‑3 kalimat dari email berikut dalam bahasa Indonesia.
Email: {body}
"""
resp = openai.ChatCompletion.create(
model="gpt-4o-mini",
messages=[{"role": "user", "content": prompt}],
temperature=0.3
)
return resp.choices[0].message.content.strip()
7. Membuat Balasan Otomatis yang Relevan
Balasan otomatis dapat disesuaikan berdasarkan kategori. Berikut contoh sederhana:
def generate_reply(category, summary):
templates = {
"Pekerjaan": "Terima kasih atas informasinya. Saya akan menindaklanjuti segera.",
"Penjualan": "Kami menghargai minat Anda. Tim penjualan kami akan menghubungi Anda dalam 24 jam.",
"Dukungan": "Terima kasih telah menghubungi tim dukungan. Berikut langkah selanjutnya: ...",
"Pribadi": "Hai! Terima kasih atas pesan Anda.",
"Spam": "" # Tidak membalas spam
}
return templates.get(category, "Terima kasih atas email Anda.")
8. Menggabungkan Semua Komponen dalam Alur Utama
def main():
conn = init_db()
cur = conn.cursor()
messages = fetch_unread()
for msg in messages:
msg_id = msg['Message-ID']
cur.execute("SELECT 1 FROM logs WHERE id=?", (msg_id,))
if cur.fetchone():
continue # sudah diproses
subject = msg['Subject'] or ""
sender = email.utils.parseaddr(msg['From'])[1]
# Ambil isi teks (plain)
body = ""
if msg.is_multipart():
for part in msg.walk():
if part.get_content_type() == "text/plain":
body = part.get_payload(decode=True).decode(errors='ignore')
break
else:
body = msg.get_payload(decode=True).decode(errors='ignore')
category = categorize_email(subject, body)
summary = summarize_email(body)
reply_text = generate_reply(category, summary)
# Kirim balasan jika bukan spam
if category != "Spam":
send_reply(sender, subject, reply_text)
replied = 1
else:
replied = 0
# Simpan log
cur.execute(
"INSERT INTO logs (id, sender, subject, category, summary, replied) VALUES (?,?,?,?,?,?)",
(msg_id, sender, subject, category, summary, replied)
)
conn.commit()
conn.close()
if __name__ == "__main__":
main()
Dengan mengeksekusi main() secara periodik (misalnya melalui cron setiap 5 menit), inbox Anda akan selalu terjaga, terklasifikasi, dan terbalas secara otomatis.
9. Tips Keamanan & Deployment
- Gunakan App Password atau OAuth2 alih‑alih menyimpan password asli.
- Batasi akses
.envhanya untuk user yang menjalankan skrip. - Enkripsi database SQLite bila diperlukan (SQLCipher).
- Uji balasan pada akun percobaan sebelum mengaktifkan di produksi.
- Monitor kuota API OpenAI untuk menghindari biaya tak terduga.
10. FAQ Singkat
Apakah skrip ini dapat dipakai dengan layanan email selain Gmail?
Ya. Anda hanya perlu menyesuaikan IMAP_HOST, SMTP_HOST, dan port yang sesuai. Sebagian besar provider mendukung IMAP & SMTP standar.
Bagaimana jika email berformat HTML?
Ubah fungsi ekstraksi body untuk mengambil text/html dan gunakan library beautifulsoup4 untuk membersihkan tag HTML sebelum mengirim ke LLM.
Apakah saya dapat menambah kategori baru?
Tentu. Tambahkan label pada prompt categorize_email dan perbarui templates pada generate_reply.
💡 Baca Juga & Rekomendasi Jaringan AI Network:
- Gunakan racikan prompt profesional di SolusiAI.my.id (Rekomendasi Tools & Otomatisasi AI).
- Pelajari tutorial skrip dan otomatisasi teknis di PromptHack.my.id (Kumpulan AI Prompt & Content Growth).
Kesimpulan
Dengan memanfaatkan otomatisasi email AI, skrip Python email yang kami rangkum di atas memberikan solusi end‑to‑end: menghubungkan ke server IMAP dan SMTP, menyimpan jejak lewat SQLite email log, mengkategorikan serta meringkas pesan menggunakan LLM email analysis, dan mengirim balasan otomatis yang relevan. Implementasi ini tidak hanya mengurangi beban kerja manual, tetapi juga meningkatkan kecepatan respons dan akurasi prioritas. Mulailah dengan menyesuaikan kredensial, jalankan skrip secara terjadwal, dan nikmati inbox yang lebih bersih serta produktivitas yang melambung.
Posting Komentar