only_active_users

This commit is contained in:
Mateusz Gruszczyński
2025-12-09 22:07:09 +01:00
parent 2854542b0d
commit 6db312454f
2 changed files with 145 additions and 0 deletions

32
app.py
View File

@@ -527,11 +527,17 @@ def main():
parser.add_argument('--mailing-all-users', action='store_true',
help='Wyślij mailing do wszystkich użytkowników z poprawnym adresem e-mail')
parser.add_argument('--active-within-days', type=int,
help='Wyślij mailing do użytkowników aktywnych w ciągu ostatnich X dni')
args = parser.parse_args()
inactive_range = None
if args.inactive_since:
try:
min_days, max_days = map(int, args.inactive_since.split('-'))
@@ -664,6 +670,32 @@ def main():
)
return
if args.active_within_days:
users = get_users(db_config)
temp_domains_cache = load_temp_domains()
now_ts = int(datetime.now().timestamp())
threshold = now_ts - args.active_within_days * 86400
candidates = [
u for u in users
if u.get('access') and u['access'] >= threshold
and (not is_fake_email(u['mail']))
and (not is_temp_email(u['mail'], temp_domains_cache))
]
print(f"📨 Wysyłanie mailingu do {len(candidates)} aktywnych użytkowników z ostatnich {args.active_within_days} dni...")
send_email_batch(
candidates,
smtp_config,
args.mails_per_pack,
args.time_per_pack,
dry_run=args.dry_run,
template_path=args.mail_template
)
return
if args.stats:
from collections import Counter

113
mail_template_firewall.html Normal file
View File

@@ -0,0 +1,113 @@
<!DOCTYPE html>
<html lang="pl">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Dziękujemy za Twoją aktywność w Unitra-Klubie</title>
<style>
body {
font-family: Arial, Helvetica, sans-serif;
background-color: #f9f9f9;
margin: 0;
padding: 0;
color: #111;
}
.container {
max-width: 640px;
margin: 30px auto;
background-color: #fff;
border: 1px solid #ccc;
padding: 30px;
box-shadow: 0 0 1px rgba(0,0,0,0.2);
}
.logo {
text-align: center;
margin-bottom: 20px;
}
.logo img {
max-width: 220px;
height: auto;
}
h1 {
font-size: 22px;
text-align: center;
color: #111;
margin-bottom: 10px;
}
.highlight {
background-color: #fdfdfd;
border-left: 3px solid #444;
padding: 16px;
margin: 25px 0;
}
.highlight ul {
margin: 10px 0 0 20px;
padding: 0;
}
.highlight li {
margin-bottom: 10px;
}
p {
font-size: 15px;
line-height: 1.6;
}
.footer {
margin-top: 40px;
font-size: 13px;
color: #777;
text-align: center;
border-top: 1px solid #ddd;
padding-top: 20px;
}
</style>
</head>
<body>
<div class="container">
<div class="logo">
<img src="https://unitraklub.pl/unitraklub_logo_czyste.png" alt="Unitra Klub logo">
</div>
<h1>Witaj @user,</h1>
<p>
Dziękujemy, że jesteś aktywnym użytkownikiem Unitra-Klubu i regularnie zaglądasz na <strong>unitraklub.pl</strong>.
</p>
<div class="highlight">
<p><strong>Dziękujemy za Twoją aktywność!</strong></p>
<ul>
<li>za udział w dyskusjach na forum i stronie unitraklub.pl,</li>
<li>za dzielenie się wiedzą, doświadczeniem i materiałami,</li>
<li>za dotychczasowe wsparcie i pomoc przy zbiórkach na rozwój klubu.</li>
</ul>
<p>
To właśnie dzięki takim osobom jak Ty nasza społeczność żyje, rośnie
i może dalej rozwijać pasję do sprzętu Unitra.
</p>
</div>
<p>
Obecnie prowadzimy nową zbiórkę na <strong>firewall/router do zmodernizowanej sieci Unitra-Klub</strong>.
Jeśli chcesz i możesz nas wesprzeć, znajdziesz wszystkie informacje pod adresem:
</p>
<p>
<strong>
<a href="https://z.unitraklub.pl/zbiorka/14">
https://z.unitraklub.pl/zbiorka/14
</a>
</strong>
</p>
<p>
Każda, nawet drobna wpłata, realnie pomaga w utrzymaniu i rozwoju infrastruktury klubu.
</p>
<p>Pozdrawiamy serdecznie,<br>Zespół administracyjny Unitra-Klub</p>
<div class="footer">
<i><b>Pomoc jest dobrowolna, opis zbiórki i sposoby wsparcia znajdziesz pod linkiem powyżej.</b></i><br>
Ten e-mail został wygenerowany automatycznie. Prosimy na niego nie odpowiadać.
</div>
</div>
</body>
</html>