Хм-м-м…
Работать - то работает только по почте приходит всякая ерунда.
Получается я должен указать у “str” кодировку, а какая у двоичного файла кодировка?
Не у двоичного файла, а у того, что получается на выходе b64encode. Кодировка там ASCII, я вроде показал.Ага, так я и говорю, приходит покорёженный текстовый файл, и естественно уж не рабочий…
Edприатаченный файл действительно не похож на исходный :(from base64 import b64encode
outer = MIMEMultipart()
fp = open(fname, 'rb')
msg = MIMEBase("application", "octet-stream")
msg.set_payload(str(b64encode(fp.read()), 'ASCII'))
msg.add_header('Content-Disposition', 'attachment', filename=fname)
fp.close()
outer.attach(msg)
print(outer.as_string())
msg.set_payload(str(b64encode(fp.read()), 'ASCII'))
msg.add_header("Content-Transfer-Encoding", "base64")
…если его конечно знать, а не как вы: что-то как-то менять, вдруг заработает…Ну вообще-то так и было :)
# -*- coding: utf-8 -*-
from smtplib import SMTP
from email.message import Message
from email.header import Header, make_header
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.base import MIMEBase
from email.mime.application import MIMEApplication
from email import encoders
from base64 import b64encode
import os
import sys
import mimetypes
russian = 'windows-1251'
msg = MIMEMultipart()
msg["From"] = make_header([("Недруг", russian), ("<from@from.from.ru>", "us-ascii")])
msg["To"] = make_header([("Друг", russian), ("<to@to.to.ru>", "us-ascii")])
msg["Subject"] = Header("привет", russian)
m = """привет от Васи"""
text = MIMEText(m.encode('cp1251'), 'plain', russian)
msg.attach(text)
#Прикладывается файл
fp = open("D:\\Temp\\aa.cdr", "rb")
to_attach = MIMEBase("application", "octet-stream")
to_attach.add_header("Content-Disposition", "attachment", filename="dfdfd")
to_attach.add_header("Content-Transfer-Encoding", "base64")
to_attach.set_payload(str(b64encode(fp.read()), 'ASCII'))
fp.close()
msg.attach(to_attach)
#print(msg.as_string())
smail=msg.as_string()
fromaddr = "from@from.from.ru"
toaddr = "to@to.to.ru"
connect = SMTP('XX.XX.XX.XX')
connect.set_debuglevel(0)
connect.sendmail(fromaddr, toaddr, smail)
connect.quit()