Python ile geliştirilmiş, SMTP protokolü üzerinden kullanıcılara güvenli tek kullanımlık şifre (OTP) göndererek kimlik doğrulama yapan bir prototip sistem.
- Gmail SMTP üzerinden 6 haneli OTP kodu gönderimi
- Kullanıcı e-posta adresi girişi ile anlık doğrulama
- Basit ve anlaşılır iki dosyalı modüler yapı
- Standart Python kütüphaneleri ile çalışır (harici bağımlılık yok)
python-smtp-email-verification-system/
├── mail_sender.py # OTP üretimi ve e-posta gönderimi
└── user_securecode.py # Kullanıcı arayüzü ve doğrulama kontrolü
6 haneli rastgele bir OTP kodu üretir, Gmail SMTP sunucusu üzerinden belirtilen e-posta adresine gönderir ve kodu döndürür.
Kullanıcıdan e-posta adresini alır, doğrulama kodunun gönderilmesini tetikler, ardından kullanıcının girdiği kodu sistemin ürettiği kodla karşılaştırır.
- Python 3.x
- Gmail hesabı
- Gmail için Uygulama Şifresi (App Password)
1. Repoyu klonlayın:
git clone https://github.com/TurkerAlbayrak/python-smtp-email-verification-system.git
cd python-smtp-email-verification-system2. mail_sender.py dosyasındaki kimlik bilgilerini güncelleyin:
EMAIL = "sizin_gmail_adresiniz@gmail.com"
PASSWORD = "gmail_uygulama_sifreniz"Normal Gmail şifrenizi kullanmayın. Aşağıdaki talimatları izleyerek bir Uygulama Şifresi oluşturun.
3. Uygulamayı çalıştırın:
python user_securecode.py4. İstendiğinde e-posta adresinizi girin; gelen kodu terminale yazın:
Email gir: ornek@gmail.com
Kod gönderildi!
Kodu gir: 483921
✔ Doğrulandı!
Gmail'in standart şifresi bu projede çalışmaz. Bunun yerine bir Uygulama Şifresi (App Password) oluşturmanız gerekir:
- Google Hesabım sayfasına gidin.
- Güvenlik sekmesini açın.
- 2 Adımlı Doğrulama'yı etkinleştirin (zorunlu).
- Arama kutusuna "Uygulama şifreleri" yazın ve açın.
- Yeni bir uygulama şifresi oluşturun ve
mail_sender.pyiçindekiPASSWORDalanına yapıştırın.
- Kimlik bilgilerinizi (
EMAIL,PASSWORD) doğrudan kaynak kodda bırakmayın. - Ortam değişkenleri veya
.envdosyası kullanmanız önerilir:
import os
EMAIL = os.environ.get("SENDER_EMAIL")
PASSWORD = os.environ.get("SENDER_PASSWORD").envdosyasını.gitignore'a eklemeyi unutmayın.- Bu proje bir prototip/eğitim amaçlı çalışmadır; production ortamında kullanmadan önce güvenlik iyileştirmeleri yapılmalıdır.
- OTP için süre sınırı (TTL) ekleme
- Birden fazla deneme hakkı ve kilitleme mekanizması
- Flask/FastAPI ile REST API entegrasyonu
- HTML e-posta şablonu desteği
- Farklı SMTP sağlayıcıları için destek (Outlook, Yahoo, vb.)
Türker Albayrak GitHub