1
1
from django .core .mail import mail_admins , send_mail
2
2
from django .template import loader
3
+ from django .conf import settings
3
4
5
+ from appointment .settings import APP_DEFAULT_FROM_EMAIL
6
+
7
+
8
+ def has_required_email_settings ():
9
+ required_settings = [
10
+ 'EMAIL_BACKEND' ,
11
+ 'EMAIL_HOST' ,
12
+ 'EMAIL_PORT' ,
13
+ 'EMAIL_HOST_USER' ,
14
+ 'EMAIL_HOST_PASSWORD' ,
15
+ 'EMAIL_USE_TLS' ,
16
+ 'EMAIL_USE_LOCALTIME' ,
17
+ 'ADMINS' ,
18
+ ]
19
+
20
+ for setting_name in required_settings :
21
+ if not hasattr (settings , setting_name ):
22
+ print (f"Warning: '{ setting_name } ' not found in settings. Email functionality will be disabled." )
23
+ return False
24
+
25
+ return True
4
26
5
27
def send_email (recipient_list , subject : str , template_url : str = None , context : dict = None , from_email = None ,
6
28
message : str = None ):
29
+ if not has_required_email_settings ():
30
+ return
31
+
7
32
if from_email is None :
8
-
33
+ from_email = APP_DEFAULT_FROM_EMAIL
9
34
10
35
html_message = ""
11
36
@@ -15,25 +40,33 @@ def send_email(recipient_list, subject: str, template_url: str = None, context:
15
40
context = context
16
41
)
17
42
18
- send_mail (
19
- subject = subject ,
20
- message = message if not template_url else "" ,
21
- html_message = html_message if template_url else None ,
22
- from_email = from_email ,
23
- recipient_list = recipient_list ,
24
- fail_silently = False ,
25
- )
26
-
43
+ try :
44
+ send_mail (
45
+ subject = subject ,
46
+ message = message if not template_url else "" ,
47
+ html_message = html_message if template_url else None ,
48
+ from_email = from_email ,
49
+ recipient_list = recipient_list ,
50
+ fail_silently = False ,
51
+ )
52
+ except Exception as e :
53
+ print (f"Error sending email: { e } " )
27
54
28
55
def notify_admin (subject : str , template_url : str = None , context : dict = None , message : str = None ):
56
+ if not has_required_email_settings ():
57
+ return
58
+
29
59
html_message = ""
30
60
if template_url :
31
61
html_message = loader .render_to_string (
32
62
template_name = template_url ,
33
63
context = context
34
64
)
35
- mail_admins (
36
- subject = subject ,
37
- message = message if not template_url else "" ,
38
- html_message = html_message if template_url else None
39
- )
65
+ try :
66
+ mail_admins (
67
+ subject = subject ,
68
+ message = message if not template_url else "" ,
69
+ html_message = html_message if template_url else None
70
+ )
71
+ except Exception as e :
72
+ print (f"Error sending email to admin: { e } " )
0 commit comments