Я использую следующее, чтобы прикрепить картинку (которая передается с репозитория Github) к электронному письму:
twitter_image = MIMEImage(open(get_static('img/twitter.png'), 'rb').read(), _subtype='png')
twitter_image.add_header('Content-ID', '<{}>'.format('twitter.png'))
get_static определяется как:
from django.contrib.staticfiles.finders import find
from django.contrib.staticfiles.templatetags.staticfiles import static
def get_static(path):
if settings.DEBUG:
return find(path)
else:
return static(path)
Этот же код отлично работает в другом проекте как в разработке, так и в производстве. Но по какой-то причине он не работает в Heroku с этим проектом, когда я запускаю функцию электронной почты в Heroku, она возвращает ошибку вроде:
Traceback (most recent call last):
File "/app/.heroku/python/lib/python3.6/code.py", line 91, in runcode
exec(code, self.locals)
File "<console>", line 1, in <module>
File "/app/notifications/models.py", line 75, in email_users
twitter_image = MIMEImage(open(get_static('img/twitter.png'), 'rb').read(), _subtype='png')
FileNotFoundError: [Errno 2] No such file or directory: '/static/img/twitter.6a4fa62e22f6.png'