Код Smtplib, работающий в python3.7 для Linux, но не для Windows 10 - PullRequest
0 голосов
/ 19 сентября 2019

Я пытаюсь отправить автоматическую почту через outlook, используя python3.7. Код smtlib работает нормально для python, установленного в Linux, в то время как тот же код возвращает мне ошибку для Windows.

import time, os, smtplib
from datetime import datetime
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.base import MIMEBase
from email import encoders


print("sam")
s = smtplib.SMTP('smtp-mail.outlook.com', 587)
print("sam1")
s.starttls()
print("sam2")
s.login("samgupta@xyz.com", "Welcome")
message = "Hi"
print("sam3")
s.sendmail("samgupta@xyz.com", "abc@xyz.com", message)
s.quit()

Этосообщение об ошибке, которое я получаю в Windows Python:

Traceback (последний вызов был последним): файл "C: /Users/sysadmin/Desktop/mail.py", строка 10, в s = smtplib.SMTP ('smtp-mail.outlook.com', 587) Файл "C: \ Users \ sysadmin \ AppData \ Local \ Programs \ Python \ Python37-32 \ lib \ smtplib.py", строка 251, в init (code, msg) = self.connect (host, port) Файл "C: \ Users \ sysadmin \ AppData \ Local \ Programs \ Python \ Python37-32 \ lib \ smtplib.py", строка 336, вconnect self.sock = self._get_socket (host, port, self.timeout) Файл "C: \ Users \ sysadmin \ AppData \ Local \ Programs \ Python \ Python37-32 \ lib \ smtplib.py", строка 307, в _get_socketself.source_address) Файл "C: \ Users \ sysadmin \ AppData \ Local \ Programs \ Python \ Python37-32 \ lib \ socket.py", строка 727, в файле create_connection поднять ошибку Файл "C: \ Users"\ sysadmin \ AppData \ Local \ Programs \ Python \ Python37-32 \ lib \ socket.py ", строка 716, в create_connection sock.connect (sa) TimeoutError: [WinError 10060] Попытка подключения не удалась, поскольку подключенная сторона не была должным образомответить через некоторое время или не удалось установить соединение, так как подключенный хост не смог ответить

1 Ответ

0 голосов
/ 19 сентября 2019

Можете ли вы просто попробовать это немного?Это должно напечатать исключения, и мы сможем решить проблему, как только узнаем природу проблемы.

import smtplib
global server
try:
    server = smtplib.SMTP_SSL( < host >, < port >)
    except Exception as e:
    print("{}".format(e))

try:
    server.login("your username", "your password")
except Exception as e:
    print("{}".format(e))
server.sendmail(
    "from@address.com",
    "to@address.com",
    "this message is from python")
server.quit()
...