Skip to content

Commit 75ca123

Browse files
committed
feat: add more detailled error messages
1 parent b7f08a1 commit 75ca123

File tree

1 file changed

+20
-2
lines changed

1 file changed

+20
-2
lines changed

hook2mail.py

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,14 @@
44
from email.parser import Parser
55
import os
66
import base64
7+
import logging
8+
9+
# Configure logging
10+
logging.basicConfig(
11+
level=logging.INFO,
12+
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s'
13+
)
14+
logger = logging.getLogger(__name__)
715

816
EMAIL_FROM = os.getenv("EMAIL_FROM", "[email protected]")
917
EMAIL_TO = os.getenv("EMAIL_TO", "[email protected], [email protected], [email protected]")
@@ -44,17 +52,27 @@ def webhook():
4452
payload = email_message.get_payload(decode=True)
4553

4654
if payload is None:
47-
raise ValueError("The email body is missing or not decodable")
55+
error_msg = "The email body is missing or not decodable"
56+
logger.error(f"400 Bad Request - {error_msg} - Request from {request.remote_addr} - Content-Type: {request.content_type}")
57+
raise ValueError(error_msg)
4858

4959
message_content = payload.decode('utf-8')
5060
if len(message_content) < 10:
51-
raise ValueError("The email body must have at least 10 characters")
61+
error_msg = "The email body must have at least 10 characters"
62+
logger.error(f"400 Bad Request - {error_msg} - Request from {request.remote_addr} - Body length: {len(message_content)}")
63+
raise ValueError(error_msg)
5264

5365
send_email(message_content, original_infos)
5466
return "OK", 200
5567
except (KeyError, ValueError, base64.binascii.Error) as e:
68+
try:
69+
data_info = f"Data keys: {list(request.json.keys())}" if request.json else "No JSON data"
70+
except:
71+
data_info = "Unable to parse request data"
72+
logger.error(f"400 Bad Request - {type(e).__name__}: {str(e)} - Request from {request.remote_addr} - Content-Type: {request.content_type} - {data_info}")
5673
return jsonify({"error": str(e)}), 400
5774
except Exception as e:
75+
logger.exception(f"500 Internal Server Error - {type(e).__name__}: {str(e)} - Request from {request.remote_addr}")
5876
return jsonify({"error": str(e)}), 500
5977

6078
def format_forwarded_email_header(original_infos):

0 commit comments

Comments
 (0)