python docs caution은 POP3 프로토콜을 사용하지 않습니다. 메일 서버는 아마도 IMAP을 이해하므로 IMAP4.partial()을 사용하여 메시지를 부분적으로 가져와 각 부분을 즉시 디스크에 기록 할 수 있습니다.
그러나 에이 있으면 POP3를 사용할 수 있습니다. POP3 프로토콜은 행 지향적입니다. 파이썬의 poplib 라이브러리는 순수한 파이썬이며 the source을 보면 반복자를 추가하는 것이 중요합니다. 나는 POP3
클래스에서 파생 귀찮게, 그래서 여기에 원숭이 패치에 의해 그것을 할 방법은하지 않았다 : 당신은 다음과 같이 메시지를 가져오고 한 번에 디스크에 한 줄을 쓸 수
from poplib import POP3
def iretr(self, which):
"""
Retrieve whole message number 'which', in iterator form.
Return content in the form (line, octets)
"""
self._putcmd('RETR %s' % which)
resp = self._getresp() # Will raise exception on error
# Simplified from _getlongresp()
line, o = self._getline()
while line != '.':
if line[:2] == '..':
o = o-1
line = line[1:]
yield line, o
line, o = self._getline()
POP3.iretr = iretr
:
를
pop_conn = POP3(servername)
...
msg_file = open(msg_file_name, "wb")
for line, octets in pop_conn.iretr(msg_number):
msg_file.write(line+"\n")
msg_file.close()
할 수 없습니까? 파이썬의 모든 작업은 기본적으로 X-> 메모리 버퍼 -> 디스크입니다. – Torxed
소켓 프로그래밍의 방향을 살펴볼 필요가 있다고 생각합니다. 하지만 정확히 어떻게하는지 모르겠습니다. – agrynchuk
다시'socket' ->'memory buffer' ->'disk' .. 같은 것을 거기에. 어셈블리 관점에서 보면, 모든 것은 CPU와 메모리 계산입니다. 기본적으로 메모리 할당을 비트 단위로 이동하고 메모리에있는 물건을 마더 보드의 다른 부분 (예 : 디스크)으로 가져 오도록 CPU에 지시합니다. 기억을 돌아 다닐 수는 없어 .. 미안 .. – Torxed