10. Exchangelib3.2官方文档 —— 联系人

本文介绍如何使用ExchangeLib库在Python中操作联系人,包括搜索、过滤、获取详细信息及更新联系人信息的方法。通过代码示例展示了如何查找特定联系人、筛选使用特定邮箱服务商的联系人,并演示了如何为联系人添加照片和备注。

与操作文件夹相同,获取联系人只需使用.people()方法:

# 移动到联系人文件夹并开始搜索
from exchangelib import Account, DistributionList
from exchangelib.indexed_properties import EmailAddress

a = Account(...)
folder = a.root / 'AllContacts'
for p in folder.people():
    print(p)
for p in folder.people().only('display_name').filter(display_name='john').order_by('display_name'):
    print(p)

# 从GAL文件夹获取指定联系人
gal = a.contacts / 'GAL Contacts'
contact = gal.get(email_addresses=EmailAddress(email='lucas@example.com'))
# 所有使用Gmail的联系人
gmail_contacts = list(gal.filter(email_addresses__contains=EmailAddress(email='gmail.com')))
# 所有Gmail邮件地址
gmail_addresses = [e.email for c in gal.filter(email_addresses__contains=EmailAddress(email='gmail.com'))
                   for e in c.email_addresses]
# 所有邮件地址
all_addresses = [e.email for c in gal.all()
                 for e in c.email_addresses if not isinstance(c, DistributionList)]

联系人有照片和备注字段,但它们不能使用。您可以使用如下方式来添加联系人照片和备注:

from exchangelib import Account, FileAttachment

a = Account(...)
contact = a.contacts.get(given_name='John')
contact.body = 'This is a note'
contact.save(update_fields=['body'])
att = FileAttachment(
    name='ContactPicture.jpg',
    content_type='image/png',
    is_inline=False,
    is_contact_photo=True,
    content=open('john_profile_picture.png', 'rb').read(),
)
contact.attach(att)
<think>根据用户查询历史,当前问题为"exchangelib KfW",结合上下文可知用户可能在配置exchangelib时遇到Kerberos for Windows缺失问题。需要整合两个主题:exchangelib库和KfW配置。 核心需求:解释exchangelib如何使用Kerberos认证,并解决KfW安装问题 技术要点: 1. exchangelib支持多种认证方式,Kerberos是其中一种(尤其适用于企业内网Exchange2. KfW提供Windows平台的Kerberos实现 3. 需确保KfW正确安装且PATH配置无误 完整响应结构: - 说明exchangelib与Kerberos的关系 - 分步骤解决KfW安装问题(复用之前方案但更简练) - 提供exchangelib使用Kerberos的配置示例 - 注意事项 - 相关问题 注意:必须包含3-5个相关问题且以"§§相关问题§§"开头</think>### 解决 exchangelib 使用 Kerberos for Windows (KfW) 的完整指南 #### 核心配置步骤: 1. **安装 Kerberos for Windows**: ```powershell # 下载64位安装包(管理员身份运行) Invoke-WebRequest -Uri "https://web.mit.edu/kerberos/dist/kfw/4.1/kfw-4.1-amd64.msi" -OutFile kfw-install.msi msiexec /i kfw-install.msi /qn ``` 2. **配置环境变量**: ```powershell # 永久添加Kerberos到PATH [Environment]::SetEnvironmentVariable( "Path", [Environment]::GetEnvironmentVariable("Path", "Machine") + ";C:\Program Files\MIT\Kerberos\bin", "Machine" ) ``` 3. **exchangelib 的 Kerberos 认证配置**: ```python from exchangelib import Credentials, Configuration, Account, DELEGATE from exchangelib.autodiscover import Autodiscovery # 使用Kerberos认证 credentials = Credentials(username=&#39;DOMAIN\\user&#39;, password=None) # 密码留空触发Kerberos # 手动配置服务端点(避免自动发现失败) config = Configuration( server=&#39;mail.example.com&#39;, credentials=credentials, auth_type=&#39;kerberos&#39; ) account = Account(primary_smtp_address=&#39;user@example.com&#39;, config=config, autodiscover=False) print(account.root.tree()) # 验证连接 ``` #### 关键注意事项: 1. **Kerberos票据管理**: ```cmd kinit user@DOMAIN # 获取新票据 klist # 查看有效票据 ``` 2. **配置文件位置**: - `krb5.ini`: `C:\ProgramData\MIT\Kerberos5\krb5.ini` - 需包含域配置: ```ini [realms] EXAMPLE.COM = { kdc = dc.example.com admin_server = dc.example.com } ``` 3. **故障排查命令**: ```powershell # 测试Kerberos功能 nltest /dsgetdc:EXAMPLE.COM setspn -L user # 检查SPN记录 ``` > **重要提示**:在域环境中需确保计算机已加域,且系统时间与域控制器同步(误差<5分钟)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值