import email from email.policy import default import pandas as pd import google.generativeai as genai def parse_email(): with open('input.eml', 'r') as f: msg = email.message_from_file(f, policy=default) # Extract email headers print("Subject:", msg['subject']) print("From:", msg['from']) print("To:", msg['to']) print("Date", msg["date"]) mail_date = msg["date"] for part in msg.walk(): content_type = part.get_content_type() disposition = str(part.get("Content-Disposition")) if "attachment" in disposition: filename = part.get_filename() print(f"Found attachment: {filename}") with open(filename, 'wb') as fp: fp.write(part.get_payload(decode=True)) if filename.endswith(('.xlsx', '.xls')): print(f"Reading Excel file: {filename}") try: df = pd.read_excel(filename) print(df.head) # Extract key information based on known row/column layout data = { "Tarih": df.iloc[3,2], "Eczane": df.iloc[4, 2], "Adres": df.iloc[5,2], "Ürün Kodu": df.iloc[8,1], "Posta kodu": df.iloc[8,6], "Şikayet": df.iloc[8,9] } for key, value in data.items(): print(f"{key}: {value}") ask_google(data["Şikayet"]) except Exception as e: print(f"Error reading Excel file: {e}") elif content_type == "text/plain" and not "attachment" in disposition: print("Body:", part.get_payload(decode=True).decode()) def ask_google(sikayet): genai.configure(api_key="api key") model = genai.GenerativeModel(model_name="gemini-1.5-flash") prompt = """, virgülden önceki şikayeti aşağıdaki sınıflardan birinde sınıflandır. Tek kelime olarak en yakın cevabı ver. Örnek: AMBALAJ Ambalaj: Ambalajla ilgili sorunları içerir. Örnekler: "AMBALAJ" Şikayet açıklamalarında geçen "akıntı", "kırık", "çatlak", "kapak" gibi ifadeler. Diğer: Başka bir kategoriye girmeyen genel şikayetler: "DİĞER" Belirgin bir kategoriye dahil olmayan, ürün veya hizmetle ilgili küçük memnuniyetsizlikler. Eksik Ürün: Ürünün eksik veya tam olarak teslim edilmemesi durumları: "EKSİK ÜRÜN" Eksik ürün veya eksik teslimatla ilgili şikayetler. Hasta: Ürünle ilgili sağlık sorunları veya yan etkileri içerir: "HASTA" Şikayet açıklamalarında geçen "akne", "alerji", "yüzde kızarıklık", "boyama", "ağrı", "bulantı" gibi sağlıkla alakalı ifadeler. Miad: Ürünlerin son kullanma tarihi veya geçerliliği ile ilgili sorunlar: "MİAD" Süresi geçmiş ürünler veya ürünün geçerliliğiyle ilgili endişeleri içeren şikayetler.""" response = model.generate_content([sikayet+prompt]) print(response.text) parse_email()