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 шт):
Во первых, Вам надо проверить кое что. А именно - что у Вас в яндекс-экаунте разрешено взаимодействие по протоклам типа 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 вещи:
Это работающий пример, и Ваши усилия, скорее всего, дадут результат, если ыв разберетесь в каждой строчке
вместо "много звездочек" надо подствить тот самый дополнительный пароль, который Яндекс Вам даст, когда вы включите ему галочку "хочу работать с почтой не только через WEB".
Успехов!
PS. Почему так сложно - написано здесь