SMTP Python Ошибка 10060

import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
import os
import socket

def send():
    get_system()
    addr_from = "*****@yandex.ru"
    addr_to = "*****@yandex.ru"
    password = "******"

    msg = MIMEMultipart()
    msg['From'] = addr_from
    msg['To'] = addr_to
    msg['Subject'] = 'Результаты проверки'
    body = "hello"
    msg.attach(MIMEText(body, 'plain'))

    server = smtplib.SMTP_SSL('smtp.yandex.ru', 400)
    # server.starttls()
    server.login(addr_from, password)
    server.send_message(msg)
    server.quit()
send()

ERROR

Traceback (most recent call last):
  File "C:\Users\miros\AppData\Local\Programs\Python\Python310-32\Lib\varnovo\blocker.py", line 155, in <module>
    send()
  File "C:\Users\miros\AppData\Local\Programs\Python\Python310-32\Lib\varnovo\blocker.py", line 150, in send
    server = smtplib.SMTP_SSL('smtp.yandex.ru', 400)
  File "C:\Users\miros\AppData\Local\Programs\Python\Python310-32\lib\smtplib.py", line 1050, in __init__
    SMTP.__init__(self, host, port, local_hostname, timeout,
  File "C:\Users\miros\AppData\Local\Programs\Python\Python310-32\lib\smtplib.py", line 255, in __init__
    (code, msg) = self.connect(host, port)
  File "C:\Users\miros\AppData\Local\Programs\Python\Python310-32\lib\smtplib.py", line 341, in connect
    self.sock = self._get_socket(host, port, self.timeout)
  File "C:\Users\miros\AppData\Local\Programs\Python\Python310-32\lib\smtplib.py", line 1056, in _get_socket
    new_socket = super()._get_socket(host, port, timeout)
  File "C:\Users\miros\AppData\Local\Programs\Python\Python310-32\lib\smtplib.py", line 312, in _get_socket
    return socket.create_connection((host, port), timeout,
  File "C:\Users\miros\AppData\Local\Programs\Python\Python310-32\lib\socket.py", line 845, in create_connection
    raise err
  File "C:\Users\miros\AppData\Local\Programs\Python\Python310-32\lib\socket.py", line 833, in create_connection
    sock.connect(sa)
TimeoutError: [WinError 10060] Попытка установить соединение была безуспешной, т.к. от другого компьютера за требуемое время не получен нужный отклик, или было разорвано уже установленное соединение из-за неверного отклика уже подключенного компьютера

Ответы (1 шт):

Автор решения: S.H.

Во первых, Вам надо проверить кое что. А именно - что у Вас в яндекс-экаунте разрешено взаимодействие по протоклам типа SMTP - короче, не только через WEB. На эту тему я уже отвечал на вопрос

Затем, если там всё ок, можно попробовать отправлять почту.

Я не могу Вам написать "из головы" на питончике, но, так как по сути это скрипт, вот Вам исходник на C#, адаптируйте его сами к питону:

using System.Net;
using System.Net.Mail;

Console.WriteLine("Hello, mail!");

        string to = "[email protected]";
        string from = "[email protected]";
        MailMessage message = new MailMessage(from, to);
        message.Subject = $"Hi, at {DateTime.Now.ToLongTimeString()}";
        message.Body = @"requestid=FA7DDC5E-01F3-450A-A041-820EF7FF8E4D-это ничего не значит, просто мусорный текст";

        SmtpClient client = new SmtpClient("smtp.yandex.ru", 587);
        client.Credentials = new NetworkCredential("[email protected]", "**************");
        client.EnableSsl = true;


        try
        {
            client.Send(message);
        }
        catch(Exception ex)
        {
            Console.WriteLine($"ERROR: {ex.Message}");
        }

        Console.WriteLine("mail1 - done!");

Обратите внимание на 2 вещи:

  1. Это работающий пример, и Ваши усилия, скорее всего, дадут результат, если ыв разберетесь в каждой строчке

  2. вместо "много звездочек" надо подствить тот самый дополнительный пароль, который Яндекс Вам даст, когда вы включите ему галочку "хочу работать с почтой не только через WEB".

Успехов!

PS. Почему так сложно - написано здесь

→ Ссылка