私は、社内イベントの電子メールや会議出席依頼を自動送信するPythonアプリケーションを開発しました。これらの情報を私の定期的な連絡とは別に保存するために、公式のお知らせを送るために使用できる代替のメールアドレスを設定しました。代替の送信者にSentOnBehalfOfName
を使用してメールの処理を行うようにアプリケーションを変更しましたが、これを会議出席依頼のために複製できませんでした。一連のウェブ検索に基づいた私の試みは次のとおりです。これを実行している場合は、しかし、私はエラーを取得する:私は別の送信者のためにオプションで追加するときに代替の送信者/オーガナイザを使用してOutlook会議出席依頼を作成するにはどうすればよいですか?
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 = ['[email protected]']
test_sender = '[email protected]example.com'
ol.send_meeting_request('Test Meeting', meeting_time, 'Nowhere',
test_recipients, 'This is a test meeting.',
test_sender)
注:これは、this questionと同じ問題ではない私は、C#を使用していないので、私はまた事実の後に会議出席依頼を編集するつもりはありませんよ。
更新:マーニックスクロスターが示唆したように、私はUIを見てきた 私はこれを行うことができます方法を確認するために、簡単ではありません(場合でも可能)。私がやったひとつの方法は、他のユーザーのカレンダーに入り、そこに新しい予定を作成して招待状を追加することです。そのメールボックスは、Account Settings
の変更時に表示される[サーバー設定]ダイアログの[More Settings...
]ボタンのAdvanced
タブに移動して追加します。この質問に対する別の答えは、COM経由でOutlookにアクセスするときにこのメールボックスを既定の発信者として使用する方法です。
この機能はUIから利用できますか?そうでなければ(それが見つからなかった)、プログラム的にも不可能かもしれません。 –
まったくの質問ではありません - 私は多くの運がなければUIを通して試してきました。しかし、http://help.lockergnome.com/office/set-meeting-organizer--ftopict697177.htmlは、PR_RECIPIENT_FLAGSを使いこなすことで可能だと思っているようです。 –