Forums

Error for automated mail sender YAHOO

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)}")

Free accounts cannot use SMTP to send emails. See https://help.pythonanywhere.com/pages/SMTPForFreeUsers/