我正在开发用于移动电话的轻量级Gmail客户端,通过IMAP访问Gmail。 我想从草稿文件夹发送一个草案,但它有一些附件,我无法下载所有的人都通过SMTP发送邮件。
移动/复制到“已发送邮件”不发送它,只需将其移动到该文件夹。
我怎么能直接发送草案未经获取所有来自客户端的内容和附件? 是否有任何IMAP命令办呢?
我正在开发用于移动电话的轻量级Gmail客户端,通过IMAP访问Gmail。 我想从草稿文件夹发送一个草案,但它有一些附件,我无法下载所有的人都通过SMTP发送邮件。
移动/复制到“已发送邮件”不发送它,只需将其移动到该文件夹。
我怎么能直接发送草案未经获取所有来自客户端的内容和附件? 是否有任何IMAP命令办呢?
IMAP是一个邮箱协议。 它不(本身)都支持发送邮件,只访问它。 为了送你必须使用SMTP邮件。 它可能有一个IMAP扩展用于发送邮件,它可能是谷歌邮件支持扩展,但我对此表示怀疑。 因此,如果你想发送带有附件的电子邮件,您必须实际提供给您的邮件的全部内容进行发送。
IMAP被设计为接收电子邮件,而不是将其发送。 没有为AFAIK发送电子邮件没有IMAP命令。 然而,有,它支持一个特殊的“发件箱”文件夹中的至少一个IMAP服务器。 当你把消息放到这个文件夹,将被自动发送。
检查上通过IMAP连接发送邮件快递-IMAP文件 。 请注意,这是一个非标准的方法,我不知道它支持这个任何其他服务器。
有RFC 4468延伸SMTP,因此它可以获取从IMAP服务器的邮件内容,但我不知道任何工作,并广泛使用的实现。
谈到Gmail的:与SMTP坚持可能是要走的最安全的方式。
顺便说一句,现在任何现代的邮件客户端(包括基于Web的)支持发送文件夹,你typicaly必须使用SMTP和IMAP发送一个邮件。 还有的在发送SMTP电子邮件,并成功地保存电子邮件到IMAP 发送文件夹之间的竞争条件。 使用IMAP发送电子邮件是为了避免这种竞争状态的方法。
发送电子邮件是某些IMAP服务器的特殊功能。 它在IMAP协议无关。 您只需复制你的电子邮件到服务器上的一个特殊的IMAP目录,并将其发送。 我怀疑,Gmail支持这一点。
我发了封邮件给我自己的电子邮件地址,使用使用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])