Skip to content

Commit 8fadbd6

Browse files
committed
Support code checkin
1 parent 89ec497 commit 8fadbd6

14 files changed

Lines changed: 476 additions & 0 deletions

python-email/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Source files supporting [Sending Emails with Python](https://realpython.com/python-send-email/) article on [Real Python](https://realpython.com)

python-email/address-email.py

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
#!/usr/bin/env python3
2+
3+
import csv
4+
5+
from send_msg import send
6+
from email.message import EmailMessage
7+
from email.headerregistry import Address
8+
9+
sender_email = "my@gmail.com"
10+
sender = Address(display_name="Me", addr_spec=sender_email)
11+
12+
with open("contacts.csv") as file:
13+
reader = csv.reader(file)
14+
next(reader) # Skip header row
15+
for name, email, grade in reader:
16+
recipient = Address(display_name=name, addr_spec=email)
17+
msg = EmailMessage()
18+
msg["to"] = recipient
19+
msg["from"] = sender
20+
msg["Subject"] = "Your grade"
21+
msg.set_content(f"Congratulations, {name}, you got a {grade}.")
22+
23+
send(msg, sender_email)

python-email/attachment-email.py

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
#!/usr/bin/env python3
2+
3+
from send_msg import send
4+
from email.message import EmailMessage
5+
from os.path import basename
6+
7+
sender_email = "my@gmail.com"
8+
receiver_email = "your@gmail.com"
9+
10+
# Build Email Message
11+
msg = EmailMessage()
12+
msg["to"] = receiver_email
13+
msg["from"] = sender_email
14+
msg["subject"] = "Attachment Test Message"
15+
16+
text = "Please find a JPG attached."
17+
msg.add_alternative(text, subtype="plain")
18+
19+
attachment_filename = "smiley-small.jpg"
20+
with open("smiley-small.jpg", "rb") as attachment:
21+
attachment_data = attachment.read()
22+
attachment_file = basename(attachment_filename)
23+
msg.add_attachment(
24+
attachment_data, maintype="image", subtype="jpeg", filename=attachment_file
25+
)
26+
27+
# Send message
28+
send(msg, sender_email)

python-email/contacts.csv

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
name,email,grade
2+
Ron Obvious,my+obvious@gmail.com,B+
3+
Killer Rabbit,my+rabbit@gmail.com,A
4+
Brian,my+brian@gmail.com,C

python-email/html-email.py

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
#!/usr/bin/env python3
2+
3+
from send_msg import send
4+
from email.message import EmailMessage
5+
6+
sender_email = "my@gmail.com"
7+
receiver_email = "your@gmail.com"
8+
9+
# Build Email Message
10+
msg = EmailMessage()
11+
msg["to"] = receiver_email
12+
msg["from"] = sender_email
13+
msg["subject"] = "HTML Test Message"
14+
15+
text = """\
16+
Hi,
17+
How are you?
18+
Real Python has many great tutorials:
19+
www.realpython.com"""
20+
21+
html = """\
22+
<html>
23+
<body>
24+
<p>Hi,<br>
25+
How are you?<br>
26+
<a href="http://www.realpython.com">Real Python</a>
27+
has many great tutorials.
28+
</p>
29+
</body>
30+
</html>
31+
"""
32+
33+
msg.set_content(text)
34+
msg.add_alternative(html, subtype="html")
35+
36+
# Send message
37+
send(msg, sender_email)
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
#!/usr/bin/env python3
2+
3+
from send_msg import send
4+
from email.message import EmailMessage
5+
6+
sender_email = "my@gmail.com"
7+
receiver_email_1 = "your@gmail.com"
8+
receiver_email_2 = "your_other@gmail.com"
9+
cc_receiver_email = "cc-you@gmail.com"
10+
bcc_receiver_email = "bcc-you@gmail.com"
11+
12+
# Build Email Message
13+
msg = EmailMessage()
14+
msg["to"] = [receiver_email_1, receiver_email_2]
15+
msg["cc"] = cc_receiver_email
16+
msg["bcc"] = bcc_receiver_email
17+
msg["from"] = sender_email
18+
msg["subject"] = "Test Message"
19+
msg.set_content("This is a test message")
20+
21+
# Send message
22+
send(msg, sender_email)

python-email/plain-text-email.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
#!/usr/bin/env python3
2+
3+
from send_msg import send
4+
from email.message import EmailMessage
5+
6+
sender_email = "my@gmail.com"
7+
receiver_email = "your@gmail.com"
8+
9+
# Build Email Message
10+
msg = EmailMessage()
11+
msg["to"] = receiver_email
12+
msg["from"] = sender_email
13+
msg["subject"] = "Test Message"
14+
msg.set_content("This is a test message")
15+
16+
# Send message
17+
send(msg, sender_email)

python-email/pyproject.toml

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
[project]
2+
name = "python-email"
3+
version = "0.1.0"
4+
description = "Source files supporting 'Sending Emails with Python' article on RealPython"
5+
readme = "README.md"
6+
requires-python = ">=3.12"
7+
dependencies = [
8+
"aiosmtpd>=1.4.6",
9+
"ruff>=0.15.9",
10+
]
11+
12+
[dependency-groups]
13+
dev = [
14+
"black>=26.3.1",
15+
"flake8>=7.3.0",
16+
"rope>=1.14.0",
17+
]

python-email/reply-to-email.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
#!/usr/bin/env python3
2+
3+
from send_msg import send
4+
from email.message import EmailMessage
5+
6+
sender_email = "my@gmail.com"
7+
reply_email = "my.different@gmail.com"
8+
receiver_email = "your@gmail.com"
9+
10+
# Build Email Message
11+
msg = EmailMessage()
12+
msg["to"] = receiver_email
13+
msg["from"] = sender_email
14+
msg["reply-to"] = reply_email
15+
msg["subject"] = "Reply Please"
16+
msg.set_content("Replies go to a different mailbox.")
17+
18+
# Send message
19+
send(msg, sender_email)

python-email/requirements.txt

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
# This file was autogenerated by uv via the following command:
2+
# uv pip compile pyproject.toml -o requirements.txt
3+
aiosmtpd==1.4.6
4+
# via python-email (pyproject.toml)
5+
atpublic==7.0.0
6+
# via aiosmtpd
7+
attrs==26.1.0
8+
# via aiosmtpd
9+
ruff==0.15.9
10+
# via python-email (pyproject.toml)

0 commit comments

Comments
 (0)