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 = '
'.format(entry.media_content[0]['url'])
html += '''
'''.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)