From c5f78fd5e388fd1d678cafb810e50cb08371d1f5 Mon Sep 17 00:00:00 2001
From: bl4d3rvnner7 <136976682+bl4d3rvnner7@users.noreply.github.com>
Date: Sun, 18 May 2025 01:42:56 +0200
Subject: [PATCH] =?UTF-8?q?=F0=9F=93=A7=20SMTP=20Checker=20v1.3=20(2024)?=
=?UTF-8?q?=20=F0=9F=93=A7?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
⚙️ Setup:
1️⃣ Create a text-file and name it whatever you want
2️⃣ Put your SMTPs inside, else copy results SMTP file and make sure you use following format:
host|port|user|pass
3️⃣ Install Python (If not installed)
Direct installer :
https://www.python.org/ftp/python/3.9.2/python-3.9.2-amd64.exe
Linux:
sudo apt install python3
Usage:
python3 smtp.py
(Linux)
py smtp.py (Windows)
1️⃣ Enter textfile name
2️⃣ Enter your email
2️⃣ Enter threads (5 are ok)
♦️ FEATURES
▪️Open Source
▪️No Backdoors
▪️No Trojan/Virus
▪️Successfully sent will be saved as "good.txt"
▪️Fast checking
---
smtp.py | 93 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 93 insertions(+)
create mode 100644 smtp.py
diff --git a/smtp.py b/smtp.py
new file mode 100644
index 0000000..5320d5b
--- /dev/null
+++ b/smtp.py
@@ -0,0 +1,93 @@
+import smtplib
+import ssl
+import platform
+import socket
+import colorama
+import os
+from email.mime.multipart import MIMEMultipart
+from email.mime.text import MIMEText
+from concurrent.futures import ThreadPoolExecutor
+colorama.init()
+
+def clear():
+ if platform == "linux":
+ os.system('clear')
+ else:
+ os.system('cls')
+
+
+class SMTPChecker:
+ def __init__(self):
+ self.banner = """\x1b[34;1m███████╗███╗ ███╗████████╗██████╗ \x1b[31;1m ██████╗██╗ ██╗███████╗ ██████╗██╗ ██╗\n\x1b[34;1m██╔════╝████╗ ████║╚══██╔══╝██╔══██╗ \x1b[31;1m ██╔════╝██║ ██║██╔════╝██╔════╝██║ ██╔╝\n\x1b[34;1m███████╗██╔████╔██║ ██║ ██████╔╝ \x1b[31;1m ██║ ███████║█████╗ ██║ █████╔╝ \n\x1b[34;1m╚════██║██║╚██╔╝██║ ██║ ██╔═══╝ \x1b[31;1m ██║ ██╔══██║██╔══╝ ██║ ██╔═██╗ \n\x1b[34;1m███████║██║ ╚═╝ ██║ ██║ ██║ \x1b[31;1m ╚██████╗██║ ██║███████╗╚██████╗██║ ██╗\n\x1b[34;1m╚══════╝╚═╝ ╚═╝ ╚═╝ ╚═╝ \x1b[31;1m ╚═════╝╚═╝ ╚═╝╚══════╝ ╚═════╝╚═╝ ╚═╝\n\n\n\t\t\t\x1b[34m | \x1b[37m@scarlettaowner \x1b[34m| \x1b[37mv1.3 \x1b[34m|\n\t\t\t\x1b[34m | \x1b[37mSCARLETTA \x1b[34m| \x1b[37mTOOLS \x1b[34m|\n\x1b[0m\n """
+ self.smtp = ""
+ self.receiver = ""
+ self.threads = 5
+ self.context = ssl._create_unverified_context()
+ def clear(self):
+ os.system('cls' if os.name == 'nt' else 'clear')
+
+ def save_valid(self, i):
+ with open('good.txt', 'a+') as file:
+ file.write(i+"\n")
+
+ def create_message(self, smtp):
+ host, port, user, pssw = smtp.split('|')
+ return f"""
📧 SCARLETTA SMTP CHECKER 📧
SMTP Works
Host => {host}
Port => {port}
User => {user}
Pass => {pssw}
Mailer Format =>{host}|{port}|{user}|{pssw}
Made By @f4c3r100
\r\n""".format(host=host, port=port, user=user, pssw=pssw, smtp=smtp)
+
+ def send_email(self, smtp, receiver):
+ host, port, user, pssw = smtp.split('|')
+ message = self.create_message(smtp)
+
+ msg = MIMEMultipart('alternative')
+ msg['Subject'] = "📧 SMTP CHECKER | SCARLETTA 📧"
+ msg['From'] = user
+ msg['To'] = receiver
+ eee = MIMEText(message, 'html')
+ msg.attach(eee)
+ try:
+ print(f"\n\x1b[37m[\x1b[33m-\x1b[37m] Attempting to connect to SMTP server: \x1b[33m{host}\x1b[37m:\x1b[33m{port} with user \x1b[33m{user}\x1b[0m")
+ if port == "465":
+ smtp_server = smtplib.SMTP_SSL(host, port, context=self.context)
+ else:
+ smtp_server = smtplib.SMTP(host, port)
+ smtp_server.starttls(context=self.context)
+ smtp_server.login(user, pssw)
+ smtp_server.sendmail(msg['From'], msg['To'], msg.as_string())
+ smtp_server.quit()
+ print(f"\x1b[37m[\x1b[32m*\x1b[37m] \x1b[32mEmail successfully sent to {receiver} using {host}:{port}\x1b[0m")
+ self.save_valid(smtp)
+ except smtplib.SMTPAuthenticationError:
+ print(f"\x1b[37m[\x1b[31m!\x1b[37m] \x1b[31mAuthentication failed for {user} on {host}:{port}\x1b[0m")
+ except smtplib.SMTPConnectError:
+ print(f"\x1b[37m[\x1b[31m!\x1b[37m] \x1b[31mFailed to connect to {host}:{port}\x1b[0m")
+ except smtplib.SMTPException as e:
+ print(f"\x1b[37m[\x1b[31m!\x1b[37m] \x1b[31mSMTP error occurred: {e}\x1b[0m")
+ except socket.gaierror as e:
+ print(f"\x1b[37m[\x1b[31m!\x1b[37m] \x1b[31mSocker error occurred: {e}\x1b[0m")
+ except Exception as e:
+ print(f"\x1b[37m[\x1b[31m!\x1b[37m] \x1b[31mOther error occurred: {e}\x1b[0m")
+ def main(self):
+ self.clear()
+ print(self.banner)
+ self.smtps = input("\x1b[37m[\x1b[36mSCARLETTA \x1b[37m| \x1b[36mSMTP\x1b[37m] Input your SMTPs \x1b[37m(\x1b[35mf.e smtp.txt\x1b[37m): ")
+ self.receiver = input("\x1b[37m[\x1b[36mSCARLETTA \x1b[37m| \x1b[36mSMTP\x1b[37m] Your Email \x1b[37m(\x1b[35mf.e test@gmx.de\x1b[37m): ")
+ threads = input("\x1b[37m[\x1b[36mSCARLETTA \x1b[37m| \x1b[36mSMTP\x1b[37m] Input your Threads \x1b[37m(\x1b[35mf.e 10\x1b[37m): ")
+
+ if os.path.exists(self.smtps):
+ with open(self.smtps, "r") as smtp_file:
+ smtp_list = smtp_file.readlines()
+ if int(threads) >= len(smtp_list):
+ self.threads = len(smtp_list)
+ elif int(threads) >= 30:
+ self.threads = 30
+ else:
+ self.threads = threads
+ with ThreadPoolExecutor(max_workers=int(self.threads)) as executor:
+ futures = [executor.submit(self.send_email, smtp.strip(), self.receiver) for smtp in smtp_list]
+ else:
+ print(f"\x1b[37m[\x1b[31m!\x1b[37m] \x1b[31mError, path {self.smtps} does not exists.\x1b[0m")
+
+
+if __name__ == '__main__':
+ checker = SMTPChecker()
+ checker.main()
\ No newline at end of file