Tell us what’s happening:
I have tried every possible way and it doesn’t pass. It is on the step 45 where I’m supposed to show confirmation that the email was sent. It is even working with the test I have put it through.
Your code so far
import datetime
class Email:
def __init__(self, sender, receiver, subject, body):
self.sender = sender
self.receiver = receiver
self.subject = subject
self.body = body
self.timestamp = datetime.datetime.now()
self.read = False
def mark_as_read(self):
self.read = True
def display_full_email(self):
self.mark_as_read()
print('\n--- Email ---')
print(f'From: {self.sender.name}')
print(f'To: {self.receiver.name}')
print(f'Subject: {self.subject}')
print(f"Received: {self.timestamp.strftime('%Y-%m-%d %H:%M')}")
print(f'Body: {self.body}')
print('------------\n')
def __str__(self):
status = 'Read' if self.read else 'Unread'
return f"[{status}] From: {self.sender.name} | Subject: {self.subject} | Time: {self.timestamp.strftime('%Y-%m-%d %H:%M')}"
class User:
def __init__(self, name):
self.name = name
self.inbox = Inbox()
# User Editable Region
def send_email(self, receiver, subject, body):
email = Email(sender=self, receiver=receiver, subject=subject, body=body)
receiver.inbox.receive_email(email)
print(f"Email sent from [{email.sender.name}] to [{email.receiver.name}]!\n")
# User Editable Region
class Inbox:
def __init__(self):
self.emails = []
def receive_email(self, email):
self.emails.append(email)
def list_emails(self):
if not self.emails:
print('Your inbox is empty.\n')
return
print('\nYour Emails:')
for i, email in enumerate(self.emails, start=1):
print(f'{i}. {email}')
def read_email(self, index):
if not self.emails:
print('Inbox is empty.\n')
return
actual_index = index - 1
if actual_index < 0 or actual_index >= len(self.emails):
print('Invalid email number.\n')
return
self.emails[actual_index].display_full_email()
def delete_email(self, index):
if not self.emails:
print('Inbox is empty.\n')
return
actual_index = index - 1
if actual_index < 0 or actual_index >= len(self.emails):
print('Invalid email number.\n')
return
del self.emails[actual_index]
print('Email deleted.\n')
alice = User("Alice")
bob = User("Bob")
alice.send_email(bob, "Hello", "This is a test")
Your browser information:
User Agent is: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36 Edg/142.0.0.0
Challenge Information:
Build an Email Simulator - Step 45