Build an Email Simulator - Step 44

Tell us what’s happening:

hello everyone i have been enjoying this journey in python but got stuck please i need help on this level

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')


# User Editable Region

    def __str__(self):
        status = "Read" if self.read else "Unread"
        time = self.timestamp.strftime('%Y-%m-%d %H:%M')
        return f"[{status}] From: {self.sender} | Subject: {self.subject} | Time: {time}"



# User Editable Region


class User:
    def __init__(self, name):
        self.name = name
        self.inbox = Inbox()

    def send_email(self, receiver, subject, body):
        email = Email(sender=self, receiver=receiver, subject=subject, body=body)
        receiver.inbox.receive_email(email)

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')

Your browser information:

User Agent is: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36

Challenge Information:

Build an Email Simulator - Step 44

What does your output look like?

Can you test this with a function call?

Do you have a variable called time?

yes i have a variable call time

def _str_(self):
status = “Read” if self.read else “Unread”
time = self.timestamp.strftime(‘%Y-%m-%d %H:%M’)
return f"[{status}] From: {self.sender} | Subject: {self.subject} | Time: {time}"

Ok, two things:

  1. The instructions do not ask you to create a time variable. The tests usually do not work well when you create an intermediary variable that wasn’t explicitly requested
  2. sender is the sender’s name,

You’ve modified this part of the seed code, you can reset the step to get the sender name back