#python #image #smtplib #imghdr
Вопрос:
Я использую email.message
и smtplib
отправляю электронные письма с помощью python. Когда изображение отправляется как вложение, возникает эта ошибка:
AttributeError: 'bytes' object has no attribute 'tell'
Вот код для вложения изображения:
if filetype.lower() in ['jpg','jpeg','png','gif']:
with open(filename, 'rb') as file:
file_data = file.read()
image_type = imghdr.what(file_data)
actual_filename = filename.split('/')[-1]
msg.add_attachment(file_data, maintype='image', subtype=image_type, filename=actual_filename)
Ответ №1:
Скорее делать
with open(filename, 'rb') as file:
file_data = file.read()
image_type = imghdr.what(file_data)
вы могли бы сделать
image_type = imghdr.what(filename)
with open(filename, 'rb') as file:
file_data = file.read()
как imghdr.what(file, h=None)
и делает
Проверяет данные изображения, содержащиеся в файле с именем по файлу, и возвращает строку, описывающую тип изображения. Если указан необязательный параметр h, аргумент файла игнорируется, и предполагается, что h содержит поток байтов для тестирования.