Skip to content

Commit b9417dc

Browse files
authored
Enhance send_email with sender_name and address formatting
Added sender_name parameter to send_email function and improved address formatting.
1 parent e036aba commit b9417dc

File tree

1 file changed

+11
-4
lines changed

1 file changed

+11
-4
lines changed

.ws/mail.py

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
from email.mime.base import MIMEBase
1111
from email import encoders
1212
from email.header import Header
13-
13+
from email.utils import parseaddr, formataddr
1414

1515
def send_email(
1616
smtp_server,
@@ -21,6 +21,7 @@ def send_email(
2121
subject,
2222
body,
2323
body_type='plain',
24+
sender_name=None,
2425
attachment_paths=None,
2526
get_socket_func=None
2627
):
@@ -38,6 +39,9 @@ def send_email(
3839
- body_type: Type of the body content ('plain' or 'html', default is 'plain').
3940
- attachment_paths: List of file paths for the attachments (optional).
4041
"""
42+
def _format_addr(s):
43+
name, addr = parseaddr(s)
44+
return formataddr((Header(name, 'utf-8').encode(), addr))
4145

4246
if get_socket_func is not None:
4347
ori_get_socket_func = smtplib.SMTP._get_socket
@@ -55,9 +59,12 @@ def send_email(
5559
server = smtplib.SMTP_SSL(smtp_server, port)
5660

5761
message = MIMEMultipart()
58-
message['From'] = Header(sender_email, 'utf-8')
59-
message['To'] = Header(receiver_email, 'utf-8')
60-
message['Subject'] = Header(subject, 'utf-8')
62+
63+
if sender_name is None:
64+
sender_name = sender_email.split('@')[0]
65+
message['From'] = _format_addr(f'{sender_name} <{sender_email}>')
66+
message['To'] = _format_addr(f'{receiver_email.split("@")[0]} <{receiver_email}>')
67+
message['Subject'] = Header(subject, 'utf-8').encode()
6168
message.attach(MIMEText(body, body_type, 'utf-8'))
6269
if attachment_paths is None:
6370
attachment_paths = []

0 commit comments

Comments
 (0)