문제

휴대 전화 용 경량 Gmail 클라이언트를 개발하여 IMAP에 의해 Gmail에 액세스하고 있습니다. 드래프트 폴더에서 드래프트를 보내고 싶지만 일부 첨부 파일이 있으며 SMTP로 보내기 위해 모두 다운로드 할 수는 없습니다.

"Send Mail"로 이동/복사하면 보내지 않으면 해당 폴더로 이동합니다.

클라이언트의 모든 컨텐츠와 첨부 파일을 가져 오지 않고 드래프트를 직접 보낼 수 있습니까? IMAP 명령이 있습니까?

도움이 되었습니까?

해결책

IMAP는 사서함 프로토콜입니다. (기본적으로) 우편 발송을 지원하지 않으며 액세스 만 액세스합니다. 메일을 보내기 위해 ~ 해야 하다 SMTP를 사용하십시오. 메일을 보내기위한 IMAP 확장이있을 수 있으며 Google Mail이 그 확장을 지원할 가능성이 있지만 의심 할 여지가 있습니다. 따라서 첨부 파일이 포함 된 이메일을 보내려면 실제로 보내는 메시지의 전체 내용이 있어야합니다.

다른 팁

IMAP는 이메일 메시지를 보내지 않고 전자 메일 메시지를 받도록 설계되었습니다. 이메일 afaik을 보내는 IMAP 명령은 없습니다. 그러나 특수 '출신'폴더를 지원하는 하나 이상의 IMAP 서버가 있습니다. 이 폴더에 메시지를 배치하면 자동으로 전송됩니다.

확인하다 IMAP 연결을 통해 메일 보내기에 대한 Courier-IMAP 문서. 이것은 비 표준 방법이며이를 지원하는 다른 서버를 모릅니다.

거기 RFC 4468 SMTP가 연장되어 IMAP 서버에서 메일 컨텐츠를 가져올 수 있지만 작동하고 널리 사용되는 구현에 대해서는 모릅니다.

Gmail에 대해 이야기하는 것 : SMTP를 고수하는 것이 아마도 가장 안전한 방법 일 것입니다.

그건 그렇고, 이제 모든 현대 우편 클라이언트 (웹 기반 메일 클라이언트 포함)가 전송된 폴더, 당신은 일반적으로 SMTP와 IMAP를 모두 사용하여 단일 메일을 보내야합니다. 그리고 SMTP를 통해 이메일을 보내는 사이에는 레이스 조건이 있습니다. 성공적으로 이메일을 IMAP에 저장합니다 전송된 폴더. 이메일을 보내기 위해 IMAP를 사용하는 것은이 경주 조건을 피하는 방법입니다.

이메일 보내는 것은 일부 IMAP 서버의 특별한 기능입니다. IMAP 프로토콜에는 아무것도 없습니다. 귀하는 서버의 특수 IMAP 디렉토리에 이메일을 복사하면 보냅니다. 나는 Gmail이 이것을 지원한다고 의심합니다.

Python 3을 Gmail 계정으로 사용하여 IMAP를 사용하여 내 이메일 주소로 이메일을 보냈습니다. 일은 사서함에 메시지를 추가하는 것입니다. 소수의 Python의 기본 라이브러리를 활용해야합니다. 또한 이것을 연구하십시오 Imaplib에 대한 문서,이 코드는 섹션에 실 렸습니다 메시지 업로드 : 사서함에 새 메시지를 추가하려면 메시지 인스턴스를 구성하고 메시지의 타임 스탬프와 함께 acpend () 메소드로 전달하십시오.

그런 다음 Gmail받은 편지함을 확인하면 새 메시지가 표시됩니다.

import imaplib
import time
import email.message
import imaplib_connect

new_message = email.message.Message()
new_message.set_unixfrom('name')
new_message['Subject'] = 'Test'
new_message['From'] = 'name@gmail.com'
new_message['To'] = 'name@gmail.com'
new_message.set_payload('This is an example message body.\n')

print(new_message)

with imaplib_connect.open_connection() as c:
    c.append('INBOX', '',
             imaplib.Time2Internaldate(time.time()),
             str(new_message).encode('utf-8'))

# Show the headers for all messages in the mailbox
c.select('INBOX')
typ, [msg_ids] = c.search(None, 'ALL')
for num in msg_ids.split():
    typ, msg_data = c.fetch(num, '(BODY.PEEK[HEADER])')
    for response_part in msg_data:
        if isinstance(response_part, tuple):
            print('\n{}:'.format(num))
            print(response_part[1])
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top