crystal99 commited on
Commit
18f091b
·
verified ·
1 Parent(s): bce05f4

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +35 -23
app.py CHANGED
@@ -1,23 +1,35 @@
1
- import asyncio
2
- from aiosmtpd.controller import Controller
3
-
4
- class SMTPServerHandler:
5
- async def handle_DATA(self, server, session, envelope):
6
- print('Message from:', envelope.mail_from)
7
- print('Message to :', envelope.rcpt_tos)
8
- print('Message data:')
9
- print(envelope.content.decode('utf8', errors='replace'))
10
- return '250 OK'
11
-
12
- def start_smtp_server():
13
- handler = SMTPServerHandler()
14
- controller = Controller(handler, hostname='localhost', port=7860)
15
- controller.start()
16
- print('SMTP server running on port 7860...')
17
- try:
18
- asyncio.get_event_loop().run_forever()
19
- except KeyboardInterrupt:
20
- controller.stop()
21
-
22
- if __name__ == "__main__":
23
- start_smtp_server()
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import smtplib
2
+ import socket
3
+ import threading
4
+ import time
5
+
6
+ HOST = 'localhost' # Replace with your desired hostname
7
+ PORT = 25 # Standard SMTP port
8
+
9
+ server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
10
+ server_socket.bind((HOST, PORT))
11
+ server_socket.listen()
12
+
13
+ def handle_client(client_socket, addr):
14
+ while True:
15
+ data = client_socket.recv(1024).decode()
16
+ if not data:
17
+ break
18
+
19
+ # Process received data (e.g., parse commands, send responses)
20
+ # ... (Implement your desired logic here)
21
+
22
+ # Example: Respond to HELO/EHLO command
23
+ if data.startswith('HELO') or data.startswith('EHLO'):
24
+ response = f'250 {HOST} Ready'
25
+ client_socket.send(response.encode())
26
+
27
+ client_socket.close()
28
+
29
+ while True:
30
+ client_socket, addr = server_socket.accept()
31
+ print('Connected by', addr)
32
+
33
+ # Create a separate thread to handle the client
34
+ client_thread = threading.Thread(target=handle_client, args=(client_socket, addr))
35
+ client_thread.start()