我想用Python登录我的帐户并使用python打印我在邮箱中收到的邮件.我知道如何连接
import getpass, poplib
user = 'my_user_name'
Mailbox = poplib.POP3_SSL('pop.googlemail.com', '995')
Mailbox.user(user)
Mailbox.pass_('my_password')
Run Code Online (Sandbox Code Playgroud)
我不知道如何让Python显示我的消息.我尝试了poplib doc中的所有函数.它们只显示数字.
我正在尝试制作一个Python程序,只检索电子邮件的正文文本而不传递标题或任何其他参数.我不知道该如何解决这个问题.
目标是能够通过消息文本向程序发送基本命令.
我现在拥有的是:
import poplib
host = "pop.gmail.com"
mail = poplib.POP3_SSL(host)
print mail.getwelcome()
print mail.user("user")
print mail.pass_("pass")
print mail.stat()
print mail.list()
print ""
if mail.stat()[1] > 0:
print "You have new mail."
else:
print "No new mail."
print ""
numMessages = len(mail.list()[1])
for i in range(numMessages):
for j in mail.retr(i+1)[1]:
print j
mail.quit()
input("Press any key to continue.")
Run Code Online (Sandbox Code Playgroud)
哪个都很好,除非执行"print J"时打印整个消息,包括标题.我只想提取正文而不需要任何额外的垃圾.
有人可以帮忙吗?谢谢!
我正在尝试访问POP3电子邮件服务器。我将轮询消息并为每个消息下载附件。我可以成功登录并获取消息,但无法弄清楚如何实际获取附件,稍后需要解析。我想我可以保存到tmp dir,直到我处理它。
这是到目前为止我得到的:
pop = poplib.POP3_SSL(server)
pop.user(usr)
pop.pass_(pwd)
f = open(file_dir, 'w')
num_msgs = len(pop.list()[1])
for msg_list in range(num_msgs):
for msg in pop.retr(msg_list+1)[1]:
mail = email.message_from_string(msg)
for part in mail.walk():
f.write(part.get_payload(decode=True))
f.close()
Run Code Online (Sandbox Code Playgroud)
这是我从网上找到的示例中拼凑而成的代码,但没有实际获得附件的可靠示例。我正在写入的文件为空。我在这里想念什么?
我使用 POP3 从 Gmail 帐户下载邮件并将其保存在 SQLite 数据库中以供进一步处理:
mailbox = poplib.POP3_SSL('pop.gmail.com', '995')
mailbox.user(user)
mailbox.pass_(password)
msgnum = mailbox.stat()[0]
for i in range(msgnum):
msg = '\n'.join(mailbox.retr(i+1)[1])
save_message(msg, dbmgr)
mailbox.quit()
Run Code Online (Sandbox Code Playgroud)
但是,在数据库中查找时,除了消息正文(有效负载)的最后一行之外,所有行都有尾随等号。你知道为什么会发生这种情况吗?
最近,在没有更改代码/库的情况下,我error_proto: line too long从hotmail收件箱中读取电子邮件(poplib.retr)时开始出现python 错误.我使用的是Python 2.7.8版.我知道长行可能会导致此错误.但有没有办法绕过这个或我需要的某个版本.感谢您提出的任何建议/指示.
这是一个回溯错误:
"/opt/rh/python27/root/usr/lib64/python2.7/poplib.py", line 232, in retr\n return self._longcmd(\'RETR %s\' % which)\n',
' File "/opt/rh/python27/root/usr/lib64/python2.7/poplib.py", line 167, in _longcmd\n return self._getlongresp()\n',
' File "/opt/rh/python27/root/usr/lib64/python2.7/poplib.py", line 152, in _getlongresp\n line, o = self._getline()\n',
' File "/opt/rh/python27/root/usr/lib64/python2.7/poplib.py", line 377, in _getline\n raise error_proto(\'line too long\')\n',
'error_proto: line too long\n'
Run Code Online (Sandbox Code Playgroud) 我只想使用 poplib 从消息邮件中获取主题:
import poplib
server ='pop3.live.com'
port = 995
login="xxx@outlook.com"
pw="xxx"
print "Connecting..."
M = poplib.POP3_SSL(server,port)
print "Connected to "+server
M.user(login)
M.pass_(pw)
print login+" is authenticated."
numMessages = len(M.list()[1])
for i in range(numMessages):
for j in M.retr(i+1)[1]:
print j
M.quit()
Run Code Online (Sandbox Code Playgroud)
有什么建议么?提前致谢
我使用poplib模块在Python 3.3从Gmail帐户提取邮件,一切运作良好,除了与检索它们之后,该邮件未标记为已读retr()法,尽管该文件说:“检索整个邮件数目其中,并设置它的可见标志。”
这是代码:
pop = poplib.POP3_SSL("pop.gmail.com", "995")
pop.user("recent:mymail@gmail.com")
pop.pass_("mypassword")
numMessages = len(pop.list()[1])
for i in range(numMessages):
for j in pop.retr(i+1)[1]:
print(j)
pop.quit()
Run Code Online (Sandbox Code Playgroud)
我做错了什么还是文档在撒谎?(或者,我只是误解了它?)