Я использую Python 3, и я пытаюсь прикрепить файл к сообщению электронной почты. Я довольно новичок в MIME и SMTP. Так что это моя функция:ТипError: объект типа 'method' не имеет len() | Попытка прикреплять файл к электронной почте. Msg
def func():
path = mypath
for file in glob.glob(path + "\\happy*"):
print(file)
sender = myemail
senderto = someonesemail
msg = MIMEMultipart('alternative')
msg['Subject'] = 'The File'
msg['From'] = sender
msg['To'] = senderto
body = "File"
msg.attach(MIMEText(body, 'plain'))
part = MIMEBase('application', 'octet-stream')
part.set_payload(open(file, encoding='charmap').read())
encoders.encode_base64(part)
part.add_header('Content-Disposition', "attachment; filename= %s" % file)
msg.attach(part)
global smtpSettings
smtpSettings = smtplib.SMTP(host=myhost, port=587)
print("Step 1 Complete")
smtpSettings.login(smtpusername, smtppassword)
print("Step 2 Complete")
smtpSettings.sendmail(sender, senderto, msg.as_string)
print("Step 3 Complete")
smtpSettings.quit()
print("Success")
Примечание стороны: senderto = приемник. Выход я получаю:
Traceback (most recent call last):
File "C:\Python34\lib\tkinter\__init__.py", line 1533, in __call__
return self.func(*args)
File "C:/Users/Luis/Desktop/PYTHON/smtptestes.py", line 73, in func
smtpSettings.sendmail(sender, senderto, msg.as_string)
File "C:\Python34\lib\smtplib.py", line 769, in sendmail
esmtp_opts.append("size=%d" % len(msg))
TypeError: object of type 'method' has no len()
Я думаю, что вы имеете в виду 'msg.as_string()'. – BrenBarn
@BrenBarn, вот и все, я скопировал эту строку откуда-то. Думаю, это было неправильно. большое спасибо – FoxSGR