0
点赞
收藏
分享

微信扫一扫

exchangelib日历:创建和查询

小迁不秃头 2022-03-21 阅读 31
python

目录

通过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 这个我没有想好怎么解决

举报

相关推荐

0 条评论