gpt4 book ai didi

python - 如何创建与备用发件人/组织者的 Outlook session 请求?

转载 作者:太空狗 更新时间:2023-10-30 00:20:00 28 4
gpt4 key购买 nike

我开发了一个 Python 应用程序来自动发送电子邮件和满足内部办公室事件的请求。为了将这些与我的常规通信分开,我们设置了一个备用电子邮件地址,我可以用它来发送官方公告。我修改了我的应用程序,通过使用备用发件人的 SentOnBehalfOfName 来处理电子邮件 - 但是,我无法为 session 请求复制它。我基于一系列网络搜索的尝试如下。但是,当运行它时,我得到了错误:

Traceback (most recent call last):
File "mailer_test.py", line 49, in <module> test_sender)
File "mailer_test.py", line 38, in send_meeting_request
mtg.Send()
File "<COMObject CreateItem>", line 2, in Send
pywintypes.com_error: (-2147024809, 'The parameter is incorrect.', None, None)

当我添加替代发件人的选项时会发生这种情况 - 删除此选项会导致邮件从我的帐户成功发送。重现错误的测试代码如下 - 我已经删除了我的实际电子邮件地址,但其他一切都是一样的。

import win32com.client

OUTLOOK_APPOINTMENT_ITEM = 1
OUTLOOK_MEETING = 1
OUTLOOK_ORGANIZER = 0
OUTLOOK_OPTIONAL_ATTENDEE = 2

ONE_HOUR = 60
THIRTY_MINUTES = 30

OUTLOOK_FORMAT = '%m/%d/%Y %H:%M'
outlook_date = lambda dt: dt.strftime(OUTLOOK_FORMAT)

class OutlookClient(object):
def __init__(self):
self.outlook = win32com.client.Dispatch('Outlook.Application')

def send_meeting_request(self, subject, time, location, recipients, body,
sender=None):
mtg = self.outlook.CreateItem(OUTLOOK_APPOINTMENT_ITEM)
mtg.MeetingStatus = OUTLOOK_MEETING
mtg.Location = location

if sender:
# Want to set the sender to an address specified in the call
# This is the portion of the code that does not work
organizer = mtg.Recipients.Add(sender)
organizer.Type = OUTLOOK_ORGANIZER
for recipient in recipients:
invitee = mtg.Recipients.Add(recipient)
invitee.Type = OUTLOOK_OPTIONAL_ATTENDEE

mtg.Subject = subject
mtg.Start = outlook_date(time)
mtg.Duration = ONE_HOUR
mtg.ReminderMinutesBeforeStart = THIRTY_MINUTES
mtg.ResponseRequested = False
mtg.Body = body
mtg.Send()

if __name__ == "__main__":
import datetime
ol = OutlookClient()
meeting_time = datetime.datetime.now() + datetime.timedelta(hours=3)
test_recipients = ['me@example.com']
test_sender = 'alternate@example.com'

ol.send_meeting_request('Test Meeting', meeting_time, 'Nowhere',
test_recipients, 'This is a test meeting.',
test_sender)

注意:这与 this question 不同,因为我没有使用 C#,而且我也没有尝试在事后编辑 session 请求。

更新:正如 Marnix Klooster 所建议的,我一直在查看 UI 以了解如何执行此操作,但它似乎并不容易(如果可能的话)。我这样做的一种方法是进入其他用户的日历并在那里创建一个新约会并添加被邀请者。通过从 More Settings... 按钮转到 Advanced 选项卡来添加该邮箱,在更改 Account Settings 时显示的 Server Settings 对话框中.这个问题的另一个答案是如何在通过 COM 访问 Outlook 时将此邮箱用作默认发件人。

最佳答案

根据 this page ,您可以代表其他人发送 session 请求,但您需要有权访问该人的日历。其他人必须任命您为代表。

关于python - 如何创建与备用发件人/组织者的 Outlook session 请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9399635/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com