Python betiği
1. Gerekli Kütüphaneleri Yükleyin
Öncelikle, e-posta göndermek için smtplib
ve raporları eklemek için email
kütüphanelerini kullanacağız. Gerekli paketleri yüklemek için şu komutu kullanabilirsiniz:
bash
pip install email-validator
2. Python Betiğini Yazın
Aşağıda, günlük bir raporu e-posta olarak göndermek için bir Python betiği bulunmaktadır. Bu betik, bir SMTP sunucusu kullanarak e-posta gönderir. Örnek olarak Gmail’in SMTP sunucusu kullanılmıştır.
python
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.base import MIMEBase
from email import encoders
import datetime
# E-posta gönderim fonksiyonudef send_email(subject, body, to_email, from_email, smtp_server, smtp_port, smtp_user, smtp_password, attachment=None):
# Mesajı oluşturma
msg = MIMEMultipart()
msg[‘From’] = from_email
msg[‘To’] = to_email
msg[‘Subject’] = subject
# E-posta gövdesini ekle
msg.attach(MIMEText(body, ‘plain’))
# Eğer varsa dosya ekle
if attachment:
attachment_name = attachment.split(“/”)[-1]
with open(attachment, “rb”) as attachment_file:
part = MIMEBase(‘application’, ‘octet-stream’)
part.set_payload(attachment_file.read())
encoders.encode_base64(part)
part.add_header(‘Content-Disposition’, f’attachment; filename= {attachment_name}‘)
msg.attach(part)
# SMTP sunucusuna bağlan ve e-postayı gönder
server = smtplib.SMTP(smtp_server, smtp_port)
server.starttls()
server.login(smtp_user, smtp_password)
text = msg.as_string()
server.sendmail(from_email, to_email, text)
server.quit()
# Raporu oluşturma ve gönderme fonksiyonu
def daily_report():
today = datetime.date.today()
subject = f”Günlük Rapor – {today}“
body = “Bu, otomatik olarak gönderilen günlük rapor e-postasıdır.”
# Buraya eklenecek raporu veya dosyayı oluşturun
# Örneğin bir dosya oluşturabilirsiniz: rapor.txt
with open(“rapor.txt”, “w”) as f:
f.write(f”Bu, {today} tarihli rapordur.”)
# E-posta bilgileri
to_email = “alici@example.com”
from_email = “gonderici@example.com”
smtp_server = “smtp.gmail.com”
smtp_port = 587
smtp_user = “gmail_kullanici_adi@gmail.com”
smtp_password = “gmail_sifre”
# E-postayı gönder
send_email(subject, body, to_email, from_email, smtp_server, smtp_port, smtp_user, smtp_password, attachment=“rapor.txt”)
# Betiği çalıştır
if __name__ == “__main__”:
daily_report()
3. Betiği Zamanlayıcıya Ekle
Windows’ta Görev Zamanlayıcı ile
- Görev Zamanlayıcı’yı açın:
Başlat > Görev Zamanlayıcı
yazın ve açın. - Yeni Görev Oluşturun: Sağ tarafta “Görev Oluştur” seçeneğine tıklayın.
- Genel Ayarlar: Görevinize bir ad verin ve “Yalnızca oturum açmış bir kullanıcı bağlıysa çalıştır” seçeneğini işaretleyin.
- Tetikleyiciler: “Yeni” butonuna tıklayın ve görevinizi günlük olarak tetiklenecek şekilde ayarlayın.
- Eylemler: “Yeni” butonuna tıklayın, “Program başlat” seçeneğini seçin ve Python betiğinizin yolunu gösterin. Örneğin:
plaintext
C:\Python\python.exe C:\Users\Kullanıcı\günlük_rapor.py
- Sonuçlandırın: Tamam’a tıklayarak görevi oluşturun.
Linux’ta Cron ile
- Crontab’ı düzenleyin: Terminalde aşağıdaki komutu çalıştırın:
bash
crontab -e
- Yeni Cron İşlemi Ekleyin: Betiğinizin her gün belirli bir saatte çalışmasını sağlamak için şu satırı ekleyin:
bash
0 9 * * * /usr/bin/python3 /home/kullanici/gunluk_rapor.py
Bu örnek, betiği her gün saat 09:00’da çalıştırır.
4. SMTP Bilgilerini ve Güvenliği Ayarlayın
Gmail gibi bazı SMTP sunucuları, harici uygulamalardan e-posta gönderilmesine izin vermeyebilir. Bu durumda, Gmail için Gmail Uygulama Şifresi oluşturmanız gerekebilir.
5. Test Edin
Betiğinizi çalıştırarak ve zamanlayıcı ile tetikleyerek her şeyin düzgün çalıştığından emin olun.
Bu adımları takip ederek, günlük e-posta raporlarınızı otomatik olarak gönderebilirsiniz.