You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python连接微软邮箱收取邮件?代码连接失败求助

微软邮箱IMAP连接失败排查与修复

问题概述

无法连接hotmail.com邮箱,已确认官方IMAP服务器配置,但代码卡在创建IMAP实例环节,报错:

socket.gaierror: [Errno 11001] getaddrinfo failed

原代码:

import imaplib
import pprint

imap_host = 'outlook.office365.com:993'
imap_user = 'myemail@hotmail.com'
imap_pass = 'password'


imap = imaplib.IMAP4(imap_host) # code dosen't execute past this line. I guess it has something to do with SSL or TSL

## login to server
imap.login(imap_user, imap_pass)

imap.select('Inbox')

tmp, data = imap.search(None, 'ALL')
for num in data[0].split():
    tmp, data = imap.fetch(num, '(RFC822)')
    print('Message: {0}\n'.format(num))
    pprint.pprint(data[0][1])
    break
imap.close()

问题根源

  1. 连接方式错误:微软IMAP服务器要求SSL加密连接,原代码使用imaplib.IMAP4()(明文连接),不符合服务器要求。
  2. 主机端口格式错误:IMAP4构造函数需要分开传递主机和端口参数,原代码将两者合并为一个字符串,导致域名解析失败。

修复方案

1. 切换SSL加密连接

使用imaplib.IMAP4_SSL()替代imaplib.IMAP4(),这是微软IMAP服务器要求的加密连接方式。

2. 拆分主机与端口参数

将imap_host拆分为单独的主机地址和端口号,分别传递给连接函数:

  • 主机地址:outlook.office365.com
  • SSL端口:993

3. 额外配置注意事项

  • 确保邮箱已开启IMAP功能(在邮箱设置的「邮件>同步邮件」菜单中启用)
  • 若账号开启了两步验证,需使用应用专用密码替代原登录密码进行连接

修正后的完整代码

import imaplib
import pprint

imap_host = 'outlook.office365.com'
imap_port = 993
imap_user = 'myemail@hotmail.com'
imap_pass = 'your_app_password_or_regular_password'

# 建立SSL加密连接
imap = imaplib.IMAP4_SSL(imap_host, imap_port)

# 登录邮箱服务器
imap.login(imap_user, imap_pass)

# 选择收件箱
imap.select('Inbox')

# 搜索所有邮件并获取第一封详情
tmp, data = imap.search(None, 'ALL')
for num in data[0].split():
    tmp, data = imap.fetch(num, '(RFC822)')
    print('Message: {0}\n'.format(num))
    pprint.pprint(data[0][1])
    break

# 关闭收件箱并退出连接
imap.close()
imap.logout()

内容的提问来源于stack exchange,提问作者samsonmarandi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 21:20:20