你怎么能使用IMAP发送邮件?(How can you send mail using IMAP?)

2019-09-01 08:41发布

我正在开发用于移动电话的轻量级Gmail客户端,通过IMAP访问Gmail。 我想从草稿文件夹发送一个草案,但它有一些附件,我无法下载所有的人都通过SMTP发送邮件。

移动/复制到“已发送邮件”不发送它,只需将其移动到该文件夹​​。

我怎么能直接发送草案未经获取所有来自客户端的内容和附件? 是否有任何IMAP命令办呢?

Answer 1:

IMAP是一个邮箱协议。 它不(本身)都支持发送邮件,只访问它。 为了送你必须使用SMTP邮件。 它可能有一个IMAP扩展用于发送邮件,它可能是谷歌邮件支持扩展,但我对此表示怀疑。 因此,如果你想发送带有附件的电子邮件,您必须实际提供给您的邮件的全部内容进行发送。



Answer 2:

IMAP被设计为接收电子邮件,而不是将其发送。 没有为AFAIK发送电子邮件没有IMAP命令。 然而,有,它支持一个特殊的“发件箱”文件夹中的至少一个IMAP服务器。 当你把消息放到这个文件夹,将被自动发送。

检查上通过IMAP连接发送邮件快递-IMAP文件 。 请注意,这是一个非标准的方法,我不知道它支持这个任何其他服务器。

有RFC 4468延伸SMTP,因此它可以获取从IMAP服务器的邮件内容,但我不知道任何工作,并广泛使用的实现。

谈到Gmail的:与SMTP坚持可能是要走的最安全的方式。



Answer 3:

顺便说一句,现在任何现代的邮件客户端(包括基于Web的)支持发送文件夹,你typicaly必须使用SMTP和IMAP发送一个邮件。 还有的在发送SMTP电子邮件,并成功地保存电子邮件到IMAP 发送文件夹之间的竞争条件。 使用IMAP发送电子邮件是为了避免这种竞争状态的方法。



Answer 4:

发送电子邮件是某些IMAP服务器的特殊功能。 它在IMAP协议无关。 您只需复制你的电子邮件到服务器上的一个特殊的IMAP目录,并将其发送。 我怀疑,Gmail支持这一点。



Answer 5:

我发了封邮件给我自己的电子邮件地址,使用使用Python 3到Gmail帐户IMAP。 什么是确实是附加一个消息到邮箱。 你需要利用Python的本地库的屈指可数。 还研究这个文档imaplib ,这个代码在部分上载消息功能要添加新的消息发送到一个邮箱,构造一个消息实例,并把它传递给append()方法,用时间戳消息一起。

然后检查你的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])


文章来源: How can you send mail using IMAP?
标签: smtp gmail imap