Я код отправки почты в Python:Отправка электронной почты с вложением в Python
from email.mime.base import MIMEBase
from email import encoders
from email.utils import formatdate
SERVER_ADDR = 'smtp.gmail.com'
def sendMail(dir, fromAddr, toAddr, subject, text, files):
msg = MIMEMultipart()
msg['From'] = fromAddr
msg['To'] = toAddr
msg['Date'] = datetime.date.today()
msg['Subject'] = subject
msg.attach(MIMEText(text))
for file in files:
part = MIMEBase('application',"octet-stream")
part.set_payload(open(file,"rb").read)
encoders.encode_base64(part)
part.add_header('Content-Disposition','attachment; filename {}'.format(os.path.basename(file)))
msg.attach(part)
smtp = smtplib.SMTP(SERVER_ADDR,587)
smtp.sendmail(fromAddr,toAddr,msg.as_string())
smtp.close()
return 0
def main(argv):
files = [argv[1]]
sendMail(myemail,myemail,"Zalacznik","Tekst maila bla bla bla.",
files) # I replaced my email here
return 0
if __name__=="__main__":
sys.exit(main(sys.argv))
Я получил сообщение об ошибке:
TypeError: sendMail() missing 1 required positional argument: 'files'
Что случилось с моим кодом?
[EDIT]: Хорошо я удалил реж от подписи, но у меня есть другая ошибка:
TypeError: expected bytes, not builtin function or method
Ошибка находится в строке encoders.encode_base64(part)
.
Похоже, вам не хватает одного аргумента. –
Укажите код, в котором вызывается функция 'sendMail'. – Kevin
Или, по крайней мере, полная трасса. Ошибка * вне * кода, который вы в настоящее время предоставляете. – jonrsharpe