Отправка электронного письма с вложениями

import smtplib

server = smtplib.SMTP( "smtp.gmail.com", 587 )
server.starttls()
server.login( '[email protected]', 'myPassword' )

file = 'C:\\Users\\PC1\\Desktop\\myFile.txt'
f = open(file, "r")
filecontent = (f.read())
server.sendmail( '[email protected]', '[email protected]', filecontent )

Когда я запускаю этот код, я получаю такую ​​​​ошибку;

Traceback (most recent call last):
  File "C:\Users\PC1\Desktop\pyos\mail.py", line 10, in <module>
    server.sendmail( '[email protected]', '[email protected]', filecontent )
  File "C:\Users\PC1\AppData\Local\Programs\Python\Python36-32\lib\smtplib.py", line 854, in sendmail
    msg = _fix_eols(msg).encode('ascii')
UnicodeEncodeError: 'ascii' codec can't encode character '\u0131' in position 31: ordinal not in range(128)

Как я могу преодолеть это? Я не хочу проблем с символами в файле, который я отправляю.


person M. West    schedule 28.05.2017    source источник
comment
вы пытаетесь прочитать файл с символами с кодировкой, которую вам нужно приспособить. На этот вопрос был дан ответ раньше   -  person Shawn Mehan    schedule 29.05.2017
comment
Извините, это совсем не конкретно.   -  person M. West    schedule 29.05.2017


Ответы (1)


Исправлена ​​проблема изменения:

  filecontent = (f.read())

to:

filecontent = (f.read().encode("utf-8"))
person M. West    schedule 29.05.2017