如何使用 imaplib 创建电子邮件并将其发送到特定邮箱

Posted

技术标签:

【中文标题】如何使用 imaplib 创建电子邮件并将其发送到特定邮箱【英文标题】:How to create an email and send it to specific mailbox with imaplib 【发布时间】:2011-04-15 17:51:23 【问题描述】:

我正在尝试使用 python 的 imaplib 创建一封电子邮件并将其发送到具有特定名称的邮箱,例如收件箱。任何人都有一些很棒的建议:)。

【问题讨论】:

【参考方案1】:

您可以使用 Python 的内置 imaplib 模块和 append() 命令将邮件附加到 IMAP 文件夹:

import imaplib
from email.message import Message
from time import time

connection = imaplib.IMAP4_SSL(HOSTNAME)
connection.login(USERNAME, PASSWORD)

new_message = Message()
new_message["From"] = "hello@itsme.com"
new_message["Subject"] = "My new mail."
new_message.set_payload("This is my message.")

connection.append('INBOX', '', imaplib.Time2Internaldate(time()), str(new_message).encode('utf-8'))
The official imaplib documentation。 More detailed examples of using imaplib.

【讨论】:

我已经尝试过你的方法,但是我收到了这个错误:TypeError: cannot use a bytes pattern on a string-like object 电子邮件未在任何地方定义。 @ShahMuzaffar email 是您导入的包。【参考方案2】:

由于我还不能评论 user3556956 的评论,这里是 python3 的答案:

connection.append('INBOX', '', imaplib.Time2Internaldate(time.time()), str(new_message).encode('utf-8'))

简而言之,您必须将消息作为字节而不是 python 字符串传递。

【讨论】:

【参考方案3】:

不知道他们是如何做到的,但 Microsoft Outlook 不允许您将电子邮件从本地文件夹移动到远程 IMAP 文件夹吗?

【讨论】:

【参考方案4】:

IMAP 协议不是为发送电子邮件而设计的。它旨在操作邮箱。

要创建电子邮件并发送它,您可以使用 SMTP,如 smtplib。

要将邮箱中已存在的电子邮件从一个文件夹移动到另一个文件夹,您可以将邮件复制到所需文件夹,然后使用uid 将其从旧文件夹中删除,如答案here。

【讨论】:

thk:),但是我可以使用 imaplib 在特定邮箱中创建电子邮件吗? @vernomcrp:不,因为正如我所解释的,imaplib 不能用于创建电子邮件。您可以先发送电子邮件,然后按上述方式移动它。

以上是关于如何使用 imaplib 创建电子邮件并将其发送到特定邮箱的主要内容,如果未能解决你的问题,请参考以下文章

具有多个条件的python imaplib搜索

如何在 zip 文件中生成 xls 文件并将其发送到电子邮件以在那里下载 - groovy [关闭]

Python imaplib 选择文件夹

Imaplib:如何从 Gmail 中删除电子邮件?

使用 imaplib 获取电子邮件,但不要将其标记为 SEEN

如何以编程方式启动 Visual Studio 并将其发送到特定文件/行?