我正在为我的项目使用imaplib,因为我需要访问gmails帐户.事实:使用gmail的标签,每条消息可能位于任意数量的文件夹/盒子/标签上.
问题是我想从每条消息中获取每个标签.
我想到的第一个解决方案是使用"All Mail"文件夹来获取所有消息,然后,对于每条消息,检查该消息是否在每个可用文件夹中.
但是,我发现这个解决方案很重,我想知道是否有更好的方法来做到这一点.
谢谢!
我正在尝试阅读特定日期和时间的所有电子邮件。
mail = imaplib.IMAP4_SSL(self.url, self.port)
mail.login(user, password)
mail.select(self.folder)
since = datetime.strftime(since, '%d-%b-%Y %H:%M:%S')
result, data = mail.uid('search', '(SINCE "'+since+'")', 'UNSEEN')
Run Code Online (Sandbox Code Playgroud)
无需时间即可正常工作。是否也可以用时间来搜索?
我正在翻新一个python脚本,检查IMAP是否有新电子邮件,如果有新邮件则发送推送通知.问题是每隔几个小时我就会崩溃.起初我无法真正理解发生了什么,但后来我发现M.debug = 4这给了我一个很好的输出,但我仍然无法理解导致问题的原因.我已经将我的脚本和调试输出从正常行为发布到崩溃,希望在python中有更好理解的人可以告诉我发生了什么以及如何解决它.
编辑:
我按照以下答案中的建议编辑了我的代码:
while True:
try:
[call function that does all your logic]
except imaplib2.IMAP4.abort:
print("Disconnected. Trying again.")
Run Code Online (Sandbox Code Playgroud)
或这个:
while True:
try:
[call function that does all your logic]
except (imaplib2.IMAP4.abort, imaplib2.IMAP4.error) as e:
print("Disconnected. Trying again.")
Run Code Online (Sandbox Code Playgroud)
但是在一段不确定的时间之后我仍然会遇到崩溃,而且异常永远不会被抓住.print("Disconnected. Trying again.")永远不会执行.
代码:
#!/usr/local/bin/python2.7
print "Content-type: text/html\r\n\r\n";
import socket, ssl, json, struct, re
import imaplib2, time
from threading import *
# enter gmail login details here
USER="username@gmail.com"
PASSWORD="password"
# enter device token here
deviceToken = 'my …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用搜索功能,但遇到了问题。我可以从 Gmail 帐户下载所有附件,并根据文件扩展名对它们进行排序。我的所有代码都可以正常工作,除非我向搜索添加了额外的条件。最初,搜索条件仅适用于 UNSEEN 电子邮件,它可以工作,然后将电子邮件标记为已看到并将其移至垃圾箱。然后我决定添加它。这是示例:原始:
resp, items = m.search (None, 'UNSEEN')
Run Code Online (Sandbox Code Playgroud)
新的:
resp, items = m.search (None, '(FROM "email" SUBJECT "some text")', 'UNSEEN')
Run Code Online (Sandbox Code Playgroud)
结果是电子邮件被移到垃圾箱,仍然未读,也没有下载任何附件。任何人都知道我在这里可能做错了什么?谢谢。
我在 Python/Django 中使用 imaplib 获取电子邮件。
我的目标是阅读纯文本和 HTML 电子邮件。
我正在使用:
mail.select('inbox', readonly=True)
result, data = mail.uid('fetch', email_uid, '(RFC822)')
raw_email = data[0][1]
email_message = email.message_from_string(raw_email)
#print "EMAIL:",email_message
#print "HEADERS",email_message.items()
subject = get_decoded_header(email_message['Subject'])
from_address = get_decoded_header(email_message['From'])
date = email_message['Date']
date = parse_date(date)
body = ''+get_first_text_block(email_message)
Run Code Online (Sandbox Code Playgroud)
以及 get_first_text_block 的代码(从网上获得):
def get_first_text_block(email_message_instance):
maintype = email_message_instance.get_content_maintype()
if maintype == 'multipart':
for part in email_message_instance.get_payload():
if part.get_content_maintype() == 'text':
return part.get_payload()
elif maintype == 'text':
return email_message_instance.get_payload()
# In cases of emails with empty body
return '' …Run Code Online (Sandbox Code Playgroud) 我正在使用 python3 并imaplib连接到 Exchange 服务器。Exchange 服务器使用为主机名“my.server.fqdn”创建的自签名证书。最近在我的工作站 (Ubuntu 14.04) 上升级操作系统后,我的 python 脚本不再有效。
我正在使用的基本代码片段在这里:
#!/usr/bin/python3
import imaplib
import socket
import ssl
import getpass
passwd = getpass.getpass()
mail = imaplib.IMAP4_SSL('my.server.fqdn', 1143)
mail.login('mike', passwd)
mail.list()
mail.select("INBOX")
Run Code Online (Sandbox Code Playgroud)
代码在升级之前运行良好。现在此代码产生此错误:
Traceback (most recent call last):
File "./example.py", line 9, in <module>
mail = imaplib.IMAP4_SSL('my.server.fqdn', 1143)
File "/usr/lib/python3.4/imaplib.py", line 1222, in __init__
IMAP4.__init__(self, host, port)
File "/usr/lib/python3.4/imaplib.py", line 181, in __init__
self.open(host, port)
File "/usr/lib/python3.4/imaplib.py", line 1236, in open
IMAP4.open(self, host, port)
File "/usr/lib/python3.4/imaplib.py", line 257, …Run Code Online (Sandbox Code Playgroud) Python imaplib 有时会返回如下所示的字符串:
=?utf-8?Q?Repertuar_wydarze=C5=84_z_woj._Dolno=C5=9Bl=C4=85skie?=
Run Code Online (Sandbox Code Playgroud)
这个符号的名称是什么?
如何将其解码(或者应该说编码?)为 UTF8?
我正在开发邮件应用程序,并遇到了 Python imaplib 的大问题。
这是我尝试用来登录邮件服务器的代码。
M = imaplib.IMAP4(self.server,int(self.port))
M.login(self.user, self.password)
Run Code Online (Sandbox Code Playgroud)
我在用着"port 143","useSLL = false",no secure。
这是我尝试登录服务器时收到的消息。
DEBUG:root:Login failed.
Traceback (most recent call last):
File "/opt/splunk/etc/apps/IMAPmailbox/bin/get_imap_email.py", line 347, in getMail
M.login(self.user, self.password)
File "/opt/splunk/lib/python2.7/imaplib.py", line 520, in login
raise self.error(dat[-1])
error: Login failed.
None
Traceback (most recent call last):
File "/opt/splunk/etc/apps/IMAPmailbox/bin/get_imap_email.py", line 724, in <module>
parseArgs()
File "/opt/splunk/etc/apps/IMAPmailbox/bin/get_imap_email.py", line 716, in parseArgs
imapProc.getMail()
File "/opt/splunk/etc/apps/IMAPmailbox/bin/get_imap_email.py", line 352, in getMail
raise LoginError('Could not log into server: …Run Code Online (Sandbox Code Playgroud) 我正在使用 python 3.7 和电子邮件,imap 库读取电子邮件并提取电子邮件和附件的内容,所有附件(如 excel、csv、pdf)都作为附件下载,但是当我在电子邮件中收到任何 .eml 文件时,它显示错误,请找到以下代码以读取电子邮件内容和附件,如果收到 eml 文件作为附件,则会显示错误。它在写入 eml 文件时显示错误。在写入时 part.get_payload(decode=True) 在 eml 文件中变为空白。
filename = part.get_filename()
if filename is not None:
dot_position = filename.find('.')
file_prefix = filename[0:dot_position]
file_suffix = filename[dot_position:len(filename)]
# print(dot_position)
# print(file_prefix)
# print(file_suffix)
now = datetime.datetime.now()
timestamp = str(now.strftime("%Y%m%d%H%M%S%f"))
newFileName = file_prefix + "_" + timestamp + file_suffix
sv_path = os.path.join(svdir, newFileName)
# allfiles = allfiles.append([{"oldfilename": filename, "newfilename": newFileName}])
mydict = filename + '$$' + newFileName
mydict1 = mydict1 + ',' + mydict
print(mydict1) …Run Code Online (Sandbox Code Playgroud) 美好的一天,我正在尝试使用 imaplib 连接到交换服务器。下面是代码:
import imaplib
imap_host = 'example.smth.smth.kz'
mail_login = 'name.lastname@smth.kz'
mail_pass = '**********'
M = imaplib.IMAP4_SSL(imap_host)
print(M.welcome)
M.login(user1, imap_pass)
Run Code Online (Sandbox Code Playgroud)
M.Welcome 返回b'* OK Microsoft Exchange IMAP4 服务已准备就绪。,这意味着我能够连接到服务器。但是,当我尝试登录时出现此错误: imaplib.error: b'LOGIN failed' 尽管如此,凭据是正确的。这里有什么问题呢?
imaplib ×10
python ×9
imap ×2
python-2.7 ×2
python-3.x ×2
django ×1
email ×1
gmail ×1
gmail-imap ×1
python-3.7 ×1
search ×1
utf-8 ×1