我遇到麻烦的环境:Windows10上的Python 2.7.11(修补到目前为止).Python通过msi安装.我在设置中检查了PATH设置,并将其设置为c:\ Python27.
这适用于Mac:
from imapclient import IMAPClient
IMAPClient("imap-mail.outlook.com", use_uid=True, ssl=(True))
Run Code Online (Sandbox Code Playgroud)
但在Windows上,如果barfs像这样:
Traceback (most recent call last):
File "test_outlook_imap.py", line 3, in <module>
IMAPClient("imap-mail.outlook.com", use_uid=True, ssl=(True))
File "C:\Python27\lib\site-packages\imapclient\imapclient.py", line 152, in __init__
self._imap = self._create_IMAP4()
File "C:\Python27\lib\site-packages\imapclient\imapclient.py", line 164, in _create_IMAP4
self._timeout)
File "C:\Python27\lib\site-packages\imapclient\tls.py", line 153, in __init__
imaplib.IMAP4.__init__(self, host, port)
File "C:\Python27\lib\imaplib.py", line 173, in __init__
self.open(host, port)
File "C:\Python27\lib\site-packages\imapclient\tls.py", line 159, in open
self.sock = wrap_socket(sock, self.ssl_context, host)
File "C:\Python27\lib\site-packages\imapclient\tls.py", line 126, in wrap_socket
ssl_context = create_default_context()
File …Run Code Online (Sandbox Code Playgroud) 因此,我正在研究一个Python脚本以从电子邮件中提取文本,并按照以下说明进行操作。到目前为止,这是脚本:
import imapclient
import pprint
import pyzmail
mymail = "my@email.com"
password = input("Password: ")
imapObj = imapclient.IMAPClient('imap.gmail.com' , ssl=True)
imapObj.login(mymail , password)
imapObj.select_folder('INBOX', readonly=False)
UIDs = imapObj.search(['SUBJECT Testing'])
rawMessages = imapObj.fetch([5484], ['BODY[]'])
message = pyzmail.PyzMessage.factory(rawMessages[5484]['BODY[]'])
Run Code Online (Sandbox Code Playgroud)
但是我收到此错误:
message = pyzmail.PyzMessage.factory(rawMessages[5484]['BODY[]'])
KeyError: 5484
Run Code Online (Sandbox Code Playgroud)
5484是搜索功能找到的电子邮件的ID。我也尝试过放置UID而不是5484,但这也不起作用。提前致谢!
我使用Python 3.5.2.我安装了imapclient没有问题pip install imapclient.但是,当我尝试安装pyzmail时pip install pyzmail,我收到以下错误消息:
ImportError: No module named '_markerlib'
----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in C:\Users\J
\AppData\Local\Temp\pip-build-ntukh55u\distribute\
Run Code Online (Sandbox Code Playgroud) 我正在使用 IMAPclient 来获取电子邮件的内容,所以我编写了这段代码:
messages = server.search(['FROM', user['email']], charset='UTF-8')
if len(messages) > 0:
for mail_id, data in server.fetch(messages, ['ENVELOPE']).items():
envelope = data[b'ENVELOPE']
Run Code Online (Sandbox Code Playgroud)
我怎样才能获得电子邮件的内容?
我们使用的是Perl 5,版本18,版本1(v5.18.1)。
之前我们将Outlook 2007连接到使用用户和密码通过Mail :: IMAPClient模块进行连接,因为不需要使用SSL或TLS。现在,我们已将Outlook迁移到2016年,在此版本中,必须引入SSL或TLS。
我试图在Perl脚本中添加SSL代码,但失败如下:
无法通过包“ IO :: Socket :: SSL”找到对象方法“新”(也许您忘记加载“ IO :: Socket :: SSL”了吗?)
我的代码:
$client = Mail::IMAPClient->new(
server => $Eserver,
User => $Euser,
Password => $Epassword,
ssl => 1,
port => 993,
Socket => IO::Socket::SSL->new
( Proto => 'tcp',
PeerAddr => $Eserver,
PeerPort => 993, # IMAP over SSL standard port
),
Run Code Online (Sandbox Code Playgroud)
如果有人以正确的方式在IMAP客户端中添加ssl模块,是否可以提供帮助。是否需要将Perl 5升级到最新版本以使用SSL或TLS(使用starttls方法?)。
另外,我们如何知道我们正在使用哪个IMAPclient模块?
我确定有些东西丢失了。不确定,因为我在Perl工作时很幼稚。
使用IMAPClient如何查看邮件正文和发件人电子邮件地址?
server = IMAPClient(imap_server, use_uid=True, ssl=ssl)
server.login(imap_user, imap_password)
print 'login successful'
select_info = server.select_folder('INBOX')
print '%d messages in INBOX' % select_info['EXISTS']
messages = server.search(['NOT DELETED'])
print "%d messages that aren't deleted" % len(messages)
print
print "Messages:"
response = server.fetch(messages, ['FLAGS', 'RFC822.SIZE'])
for msgid, data in response.iteritems():
print ' ID %d: %d bytes, flags=%s' % (msgid,
data['RFC822.SIZE'],
data['FLAGS'])
Run Code Online (Sandbox Code Playgroud) imapclient ×6
python ×4
ssl ×2
email ×1
imaplib ×1
keyerror ×1
perl ×1
python-2.7 ×1
sockets ×1
windows ×1