Python邮件与日历管理

简介: 【4月更文挑战第13天】Python 通过 `smtplib` 和 `email` 发送邮件,`imaplib` 接收邮件。`google-api-python-client` 库用于管理 Google Calendar,示例代码展示了列出日历事件的功能。要使用 Google Calendar API,需设置服务帐户凭据和范围。

image.png

Python 提供了多种库,可以帮助你管理电子邮件和日历。下面是一些常用的库及其基本用法。

电子邮件管理

使用 smtplibemail 库发送电子邮件

Python 的 smtplibemail 库可以用来发送电子邮件。以下是一个简单的示例:

import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText

# 创建邮件对象
msg = MIMEMultipart()
msg['From'] = 'your-email@example.com'
msg['To'] = 'recipient-email@example.com'
msg['Subject'] = 'Hello, this is a test email'

# 添加邮件正文
body = 'This is the email body.'
msg.attach(MIMEText(body, 'plain'))

# 发送邮件
server = smtplib.SMTP('smtp.example.com', 587)  # 替换为你的 SMTP 服务器和端口
server.starttls()  # 启动 TLS 加密
server.login('your-email@example.com', 'your-password')  # 替换为你的邮箱和密码
server.sendmail(msg['From'], msg['To'], msg.as_string())
server.quit()

使用 IMAP 接收电子邮件

要接收电子邮件,你可以使用 imaplib 库。以下是一个简单的示例:

import imaplib
import email

# 连接到 IMAP 服务器
mail = imaplib.IMAP4_SSL('imap.example.com')  # 替换为你的 IMAP 服务器
mail.login('your-email@example.com', 'your-password')  # 替换为你的邮箱和密码

# 选择邮箱
mail.select('inbox')

# 搜索邮件
result, data = mail.uid('search', None, '(UNSEEN)')  # 搜索未读邮件
mail_ids = data[0]
id_list = mail_ids.split()
latest_email_id = int(id_list[-1])

# 获取邮件内容
_, msg_data = mail.uid('fetch', latest_email_id, '(BODY.PEEK[])')
raw_email = msg_data[0][1].decode('utf-8')
email_message = email.message_from_string(raw_email)

# 打印邮件主题和正文
print(email_message['Subject'])
for part in email_message.walk():
    if part.get_content_type() == 'text/plain':  # 忽略附件
        body = part.get_payload(decode=True)
        print(body.decode('utf-8'))

# 断开连接
mail.logout()

日历管理

对于日历管理,你可以使用 google-api-python-client 库来与 Google Calendar API 交互。以下是一个简单的示例,展示如何列出你的日历事件:

首先,你需要安装 google-api-python-client 库:

pip install google-api-python-client

然后,你可以使用以下代码列出你的日历事件:

from apiclient.discovery import build
from oauth2client.service_account import ServiceAccountCredentials

# 设置你的 Google Calendar API 凭据和范围
SCOPES = ['https://www.googleapis.com/auth/calendar.readonly']
KEY_FILE_LOCATION = 'path/to/your/service-account.json'  # 替换为你的服务帐户 JSON 文件路径

# 创建凭据对象
credentials = ServiceAccountCredentials.from_json_keyfile_name(KEY_FILE_LOCATION, SCOPES)

# 构建日历服务对象
calendar_service = build('calendar', 'v3', credentials=credentials)

# 列出主日历中的事件
now = calendar_service.events().list(calendarId='primary', timeMin='2023-01-01T00:00:00Z', timeMax='2023-12-31T23:59:59Z', singleEvents=True, orderBy='startTime').execute()
events = now.get('items', [])

# 打印事件信息
for event in events:
    start = event['start'].get('dateTime', event['start'].get('date'))
    print('Start: {}'.format(start))
    print('Summary: {}'.format(event['summary']))
    print('Description: {}'.format(event.get('description')))

请注意,这只是一个基本示例。为了完整的功能和错误处理,你可能需要根据你的具体需求进行更多的

目录
相关文章
|
6月前
|
Python
空间管理大师已上线!(2),Python高级工程师进阶学习】
空间管理大师已上线!(2),Python高级工程师进阶学习】
|
3月前
|
前端开发 JavaScript Java
【实操】SpringBoot监听Iphone15邮件提醒,Selenium+Python自动化抢购脚本
本文介绍了一个结合SpringBoot和Python的实用功能,旨在监控iPhone 15的库存状态并通过邮件提醒用户。系统采用SpringBoot监听苹果官网API,解析JSON数据判断是否有货,并展示最近的库存记录。此外,还能自动触发Selenium+Python脚本实现自动化购买。文中详细介绍了技术栈、接口分析、邮件配置及自动化脚本的设置方法。该项目不仅适用于熟悉后端开发的人员,也适合回顾Layui和Jquery等前端技术。
54 0
【实操】SpringBoot监听Iphone15邮件提醒,Selenium+Python自动化抢购脚本
|
4月前
|
数据挖掘 Python
🚀告别繁琐!Python I/O管理实战,文件读写效率飙升的秘密
【7月更文挑战第29天】在 Python 编程中,高效的文件 I/O 对性能至关重要。
49 4
|
4月前
|
监控 网络协议 网络安全
SMTP操作使用详解并通过python进行smtp邮件发送示例
SMTP操作使用详解并通过python进行smtp邮件发送示例
135 3
|
4月前
|
数据挖掘 数据处理 Python
🔍深入Python系统编程腹地:文件系统操作与I/O管理,打造高效数据处理流水线
【7月更文挑战第29天】深入Python系统编程腹地:文件系统操作与I/O管理,打造高效数据处理流水线
39 3
|
4月前
|
安全 数据安全/隐私保护 Python
|
4月前
|
JSON 监控 开发者
Python I/O管理新篇章:优化你的程序,让数据流动更顺畅
【7月更文挑战第30天】在数据驱动时代, Python I/O操作效率至关重要。理解I/O瓶颈,使用缓冲技术(如调整`open`的`buffering`参数),并发与异步I/O(借助`asyncio`),高效序列化(json, msgpack),及监控调试(cProfile)能显著提升性能。示例展示了缓冲读取和异步文件操作的最佳实践。不断学习可助开发者优化数据流。
67 2
|
4月前
|
API Python
Python高手修炼手册:精通文件系统操作,掌控I/O管理,提升编程效率
【7月更文挑战第30天】在 Python 编程中, 文件系统操作与 I/O 管理是连接程序与数据的关键。初学者常因路径错误和权限问题受挫, 而高手能自如管理文件。传统 `os` 和 `os.path` 模块易出错, `pathlib` 提供了更直观的对象导向 API。I/O 方面, 同步操作会阻塞程序, 异步 (如使用 `aiofiles`) 则能大幅提升并发能力。真正的高手不仅掌握 API, 更能预见性能瓶颈并优化代码, 实现高效与优雅。
41 1
|
5月前
|
监控 算法 Java
Python中管理内存
Python中管理内存