ich möchte gerne Emails via Python abrufen und die Anhänge speichern, diese sollen dann durch ein cron job gedruckt werden.
Das Script habe ich hier im Forum gefunden jedoch erhalte ich beim ausführen folgenden Fehler:
Code: Alles auswählen
/Users/benediktschulz/PycharmProjects/untitled/venv/bin/python /Users/benediktschulz/PycharmProjects/untitled/test
Traceback (most recent call last):
File "/Users/benediktschulz/PycharmProjects/untitled/test", line 38, in <module>
main()
File "/Users/benediktschulz/PycharmProjects/untitled/test", line 32, in main
save_attachments('\Users'.join(client.retr(message_number)[1]))
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/poplib.py", line 232, in retr
return self._longcmd('RETR %s' % which)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/poplib.py", line 167, in _longcmd
return self._getlongresp()
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/poplib.py", line 143, in _getlongresp
resp = self._getresp()
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/poplib.py", line 136, in _getresp
raise error_proto(resp)
poplib.error_proto: -ERR Noise after message number: 126533
Process finished with exit code 1
Code: Alles auswählen
from __future__ import absolute_import, division, print_function
import email
import os
import poplib
PROVIDER = 'pop.server.de'
USER = 'xxx@xxx.de'
PASSWORD = '12345677'
SAVE_DIR = '/Users/benediktschulz/'
def save_attachments(mail_string):
attachments = list()
for part in email.message_from_string(mail_string).walk():
filename = part.get_filename()
if filename:
attachments.append((filename, part.get_payload(decode = True)))
for filename, content in attachments:
with open(os.path.join(SAVE_DIR, filename), 'wb') as attachment_file:
attachment_file.write(content)
print('Found and saved attachment {0!r}.'.format(filename))
def main():
try:
client = poplib.POP3_SSL(PROVIDER)
client.user(USER)
client.pass_(PASSWORD)
for message_number in client.list()[1]:
save_attachments('\Users'.join(client.retr(message_number)[1]))
finally:
client.quit()
if __name__ == '__main__':
main()