Guyts, I have been getting this error for running practice code for automated mail birthday wisher.
Traceback (most recent call last):
File "/home/VampireSRB/main.py", line 35, in <module>
with smtplib.SMTP("smtp.mail.yahoo.com", port=587) as connection:
File "/usr/local/lib/python3.9/smtplib.py", line 255, in __init__
(code, msg) = self.connect(host, port)
File "/usr/local/lib/python3.9/smtplib.py", line 341, in connect
self.sock = self._get_socket(host, port, self.timeout)
File "/usr/local/lib/python3.9/smtplib.py", line 312, in _get_socket
return socket.create_connection((host, port), timeout,
File "/usr/local/lib/python3.9/socket.py", line 843, in create_connection
raise err
File "/usr/local/lib/python3.9/socket.py", line 831, in create_connection
sock.connect(sa)
ConnectionRefusedError: [Errno 111] Connection refused
My code is:
import smtplib
import pandas
import datetime as dt
import random
my_email = xxxx
password = xxxx
now = dt.datetime.now()
current_month = now.month
current_day = now.day
data = pandas.read_csv("birthdays.csv")
birthdays = data.to_dict(orient="records")
birthdays_dict = {row["name"]: (row["month"], row["day"]) for row in birthdays}
emails = {row["name"]: row["email"] for row in birthdays}
celebrators = [person for person in birthdays_dict if birthdays_dict[person] == (current_month, current_day)]
for celebrator in celebrators:
email = emails[celebrator]
letters = ["letter_1", "letter_2", "letter_3"]
letter = random.choice(letters)
with open(f"letter_templates/{letter}.txt") as file:
text = file.read()
with smtplib.SMTP("smtp.mail.yahoo.com", port=587) as connection:
connection.starttls()
connection.login(user=my_email, password=password)
connection.sendmail(from_addr=my_email,
to_addrs=email,
msg=f"Subject: Happy Birthday!!!\n\n{text.replace('[NAME]', celebrator)}")