目录
通过exchangelib 创建日历
前言
calendar 创建和查询
创建calendar
啥话不说,直接上代码
import xlwt
import datetime
import timedelta
import json
import pytz
from exchangelib import DELEGATE, IMPERSONATION, Account, Credentials, \
EWSDateTime, EWSTimeZone, Configuration, NTLM, GSSAPI, CalendarItem, Message, \
Mailbox, Attendee, Q, ExtendedProperty, FileAttachment, ItemAttachment, \
HTMLBody, Build, Version, FolderCollection, Folder, folders
credentials = Credentials('xxx@outlook.com', '密码') # 设置 outlook.com 邮箱和密码
a = Account('xxx@outlook.com', credentials=credentials, autodiscover=True) # 设置 outlook 邮箱
pytz_tz = pytz.timezone('Asia/Shanghai') # 设置时区 'Asia/Shanghai'
# 创建日历请求并将其发送出去
item = CalendarItem(
account=a,
folder=a.calendar,
start=pytz_tz.localize(datetime.datetime(2022, 3, 25, 12, 15)), # 设置开始日期和时间
end=pytz_tz.localize(datetime.datetime(2022, 3, 28, 14, 15)), # 设置结束日期和时间
subject="This is calendar subject", # 设置标题
body="This is the body of calendar.", # 设置内容
reminder_is_set = True , # 设置是否提醒
reminder_minutes_before_start = 15 , # 设置提醒为开始前多少分钟
required_attendees=['xxx@xxxx.com'] # 设置提醒的人的邮箱
)
item.save() # 保存日历
针对问题创建两种不同的日历
import xlwt
import datetime
import timedelta
import json
import pytz
from exchangelib import DELEGATE, IMPERSONATION, Account, Credentials, \
EWSDateTime, EWSTimeZone, Configuration, NTLM, GSSAPI, CalendarItem, Message, \
Mailbox, Attendee, Q, ExtendedProperty, FileAttachment, ItemAttachment, \
HTMLBody, Build, Version, FolderCollection, Folder, folders
credentials = Credentials('xxx@outlook.com', '密码') # 设置 outlook.com 邮箱和密码
a = Account('xxx@outlook.com', credentials=credentials, autodiscover=True) # 设置 outlook 邮箱
pytz_tz = pytz.timezone('Asia/Shanghai') # 设置时区 'Asia/Shanghai'
# 创建日历请求并将其发送出去
item = CalendarItem(
account=a,
folder=a.calendar,
start=pytz_tz.localize(datetime.datetime(2022, 3, 29, 12, 15)), # 设置开始日期和时间
end=pytz_tz.localize(datetime.datetime(2022, 3, 30, 14, 15)), # 设置结束日期和时间
subject="Test the type of EWSDateTime", # 设置标题
body="EWSDateTime Type Response Result.", # 设置内容
reminder_is_set = True , # 设置是否提醒
reminder_minutes_before_start = 10 , # 设置提醒为开始前多少分钟
required_attendees=['xxx@xxxx.com'] # 设置提醒的人的邮箱
)
item.save() # 保存日历
# 创建日历请求并将其发送出去
item = CalendarItem(
account=a,
folder=a.calendar,
start=pytz_tz.localize(datetime.datetime(2022, 3, 30)), # 设置开始日期和时间
end=pytz_tz.localize(datetime.datetime(2022, 3, 31)), # 设置结束日期和时间
subject="Test the type of EWSDate", # 设置标题
body="EWSDate Type Response Result.", # 设置内容
reminder_is_set = True , # 设置是否提醒
reminder_minutes_before_start = 15 , # 设置提醒为开始前多少分钟
required_attendees=['ppp@ppp.com'] # 设置提醒的人的邮箱
)
item.save() # 保存日历
calendar的查询
import xlwt
import datetime
import timedelta
import time
import json
import pytz
from pytz import timezone
import exchangelib
from exchangelib import DELEGATE, IMPERSONATION, Account, Credentials, \
EWSDateTime, EWSTimeZone, Configuration, NTLM, GSSAPI, CalendarItem, Message, \
Mailbox, Attendee, Q, ExtendedProperty, FileAttachment, ItemAttachment, \
HTMLBody, Build, Version, FolderCollection, Folder, folders, EWSDate, ewsdatetime
import pandas as pd
credentials = Credentials('xxx@outlook.com', '密码') # 设置 outlook.com 邮箱和密码
a = Account('xxx@outlook.com', credentials=credentials, autodiscover=True) # 设置 outlook 邮箱
tz_cn = pytz.timezone('Asia/Shanghai')
start = tz_cn.localize(datetime.datetime(2022, 3, 29))
end = tz_cn.localize(datetime.datetime(2022, 4, 1))
items_for_result = a.calendar.filter(start__range=(start, end)) # 过滤指定日期内容
list_calendar = []
for calendar_item in items_for_result.all().order_by('-datetime_received')[:10]:
list_calendar.append([calendar_item.subject, calendar_item.text_body, calendar_item.start, type(calendar_item.start), calendar_item.end, calendar_item.reminder_minutes_before_start])
print(list_calendar)
运行后的结果统一的为UTC格式的时间。
C:\Python38\python.exe D:/JupyterCode/ExchangeMailProject/calendar/QueryCalendar_v1.6.py
[['Test the type of EWSDate', 'EWSDate Type Response Result.', EWSDateTime(2022, 3, 29, 16, 0, tzinfo=EWSTimeZone(key='UTC')), <class 'exchangelib.ewsdatetime.EWSDateTime'>, EWSDateTime(2022, 3, 30, 16, 0, tzinfo=EWSTimeZone(key='UTC')), 15],
['Test the type of EWSDateTime', 'EWSDateTime Type Response Result.', EWSDateTime(2022, 3, 29, 4, 15, tzinfo=EWSTimeZone(key='UTC')), <class 'exchangelib.ewsdatetime.EWSDateTime'>, EWSDateTime(2022, 3, 30, 6, 15, tzinfo=EWSTimeZone(key='UTC')), 10]]
问题:
查询返回的start 类型为 exchangelib.ewsdatetime.EWSDate、 exchangelib.ewsdatetime.EWSDateTime 这个我没有想好怎么解决