calendar-agent / tools /mail_sender.py
alicemputer's picture
ProAgenta temel işlevler kazandırıldı ve gradio arayüzü oluşturuldu.
f44789d
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from smolagents import tool
import os
from tools.get_events import get_calendar_events # Takvim etkinliklerini almak için
@tool
def send_calendar_via_email(to_email: str, date_str: str) -> str:
"""
Belirtilen e-posta adresine, belirtilen tarihteki takvim programını mail olarak gönderir.
Args:
to_email (str): Takvimin gönderileceği e-posta adresi.
date_str (str): Takviminin alınacağı tarih (örn: "bugün", "yarın", "15-05-2025").
Returns:
str: E-postanın gönderilme durumuna dair bir mesaj. BAŞARILI ifadesi içeriyorsa agent durdurulabilir.
"""
from_email = os.environ.get("MAIL_USERNAME")
password = os.environ.get("MAIL_PASSWORD")
if not from_email or not password:
return "E-posta gönderme bilgileri (.env dosyasında MAIL_USERNAME ve MAIL_PASSWORD tanımlı olmalı) eksik."
events = get_calendar_events(date_str=date_str)
if isinstance(events, str): # Hata mesajı geldiyse
return f"Takvim bilgileri alınamadı: {events}"
if not events:
body = f"{date_str} tarihinde herhangi bir etkinliğiniz bulunmamaktadır."
else:
body = f"{date_str} tarihli takviminiz aşağıdaki gibidir:\n\n"
for event in events:
body += f"- {event}\n"
subject = f"{date_str} Takviminiz"
msg = MIMEMultipart()
msg["From"] = from_email
msg["To"] = to_email
msg["Subject"] = subject
msg.attach(MIMEText(body, "plain"))
try:
server = smtplib.SMTP("smtp.gmail.com", 587)
server.starttls()
server.login(from_email, password)
server.send_message(msg)
server.quit()
return f"✅ {to_email} adresine {date_str} takviminiz başarıyla gönderildi. BAŞARILI"
except Exception as e:
return f"❌ Mail gönderilemedi: {e}"
if __name__ == '__main__':
print("Bu dosya bir araç modülüdür ve doğrudan çalıştırılmamalıdır.")