我正在编写一个脚本来从我的Web应用程序发送的电子邮件中获取链接,然后开始一组自动化测试。在我的代码应该只抓住电子邮件正文时,我还没有开始扫描其中的链接,因为我没有回复。
import imaplib
mail = imaplib.IMAP4_SSL('imap.gmail.com')
mail.login('user', 'passwd')
mail.list()
mail.select("inbox")
result, data = mail.search(None, "ALL")
ids = data[0]
id_list = ids.split()
latest_email_id = id_list[-1]
result, data = mail.fetch(latest_email_id, "(RFC822)")
raw_email = data[0][1]
print raw_email
我的代码中没有看到任何错误,因为我收到了最新的电子邮件(收件箱顶部),并为帐户设置了我的IMAP。任何人都可以告诉我为什么我会收到错误:
socket.error: [Errno 10060] A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond
提前致谢。
编辑:公司防火墙阻止端口143和993(默认IMAP(S)端口),我已将我的解决方法作为答案发布。我的代码没有错!
答案 0 :(得分:0)
为了解决公司端口限制,我使用netsh命令使用终端中的以下命令将开放端口转发到端口993(imaplib的SSL默认值)
netsh interface portproxy add v4tov4 listenport=UNBLOCKTHISPORT listenaddress=YOURIP connectport=THISPORTISOPEN connectaddress=YOURIP