import feedparser import smtplib from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText def generate_html(feed_url): feed = feedparser.parse(feed_url) html = ''' NYTimes News

NYTimes News

''' for entry in feed.entries: title = entry.title if 'title' in entry else '' published = entry.published if 'published' in entry else '' summary = entry.summary if 'summary' in entry else '' link = entry.link if 'link' in entry else '' image = '' if 'media_content' in entry and len(entry.media_content) > 0: image = 'Image'.format(entry.media_content[0]['url']) html += '''

{}

{}

{}

Read More

'''.format(title, published, image, link) html += ''' ''' return html def send_email(sender_email, sender_password, receiver_email, subject, message): msg = MIMEMultipart() msg['From'] = sender_email msg['To'] = receiver_email msg['Subject'] = subject msg.attach(MIMEText(message, 'html')) try: with smtplib.SMTP('smtp.gmail.com', 587) as server: server.starttls() server.login(sender_email, sender_password) server.sendmail(sender_email, receiver_email, msg.as_string()) print('Email sent successfully.') except smtplib.SMTPException as e: print('Failed to send email. Error:', str(e)) if __name__ == '__main__': nytimes_rss_feed = 'https://rss.nytimes.com/services/xml/rss/nyt/World.xml' html_content = generate_html(nytimes_rss_feed) sender_email = 'your_email@gmail.com' sender_password = 'your_password' receiver_email = 'recipient_email@gmail.com' email_subject = 'Daily News Digest' email_message = 'Please find below the latest news headlines:

' + html_content send_email(sender_email, sender_password, receiver_email, email_subject, email_message)