#!/usr/bin/env python
# coding: utf8
from smtplib import SMTP_SSL
from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
from email.mime.text import MIMEText
from email import encoders
import os
filepath = 'file.png'
address = "test@test.ru"
password = 'secret'
mail_adr = 'mail.test.ru'
mail_port = 465
# Compose attachment
part = MIMEBase('application', "octet-stream")
part.set_payload(open(filepath, "rb").read())
encoders.encode_base64(part)
part.add_header('Content-Disposition', "attachment; filename= %s" % os.path.basename(filepath))
# Compose message
msg = MIMEMultipart()
msg['From'] = address
msg['To'] = address
msg.attach(part)
# Send mail
smtp = SMTP_SSL()
smtp.set_debuglevel(1)
smtp.connect(mail_adr, mail_port)
smtp.login(address, password)
smtp.sendmail(address, address, msg.as_string())
smtp.quit()
При выполнении кода всё проходит без проблем до строчки
smtp.sendmail(address, address, msg.as_string())
и вылезает ошибка
\n'
Traceback (most recent call last):
File "/usr/lib/python3.5/smtplib.py", line 353, in send
self.sock.sendall(s)
File "/usr/lib/python3.5/ssl.py", line 891, in sendall
v = self.send(data[count:])
File "/usr/lib/python3.5/ssl.py", line 861, in send
return self._sslobj.write(data)
File "/usr/lib/python3.5/ssl.py", line 586, in write
return self._sslobj.write(data)
ConnectionResetError: [Errno 104] Connection reset by peer
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "./mail.py", line 41, in <module>
smtp.sendmail(address, address, msg.as_string())
File "/usr/lib/python3.5/smtplib.py", line 877, in sendmail
(code, resp) = self.data(msg)
File "/usr/lib/python3.5/smtplib.py", line 567, in data
self.send(q)
File "/usr/lib/python3.5/smtplib.py", line 356, in send
raise SMTPServerDisconnected('Server not connected')
smtplib.SMTPServerDisconnected: Server not connected
Почтовый сервер - корпоративный на ESMTP Postfix.
Файлы пробовал различные, не только PNG но и текстовые и даже этот же скрипт на Python-e - ошибка одна и та же.
Python 3.5 стоит в virtualenv.
При чём сообщения без вложений уходят и приходят нормально.
В чем проблема не могу понять.