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')))

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

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