26

ローカルマシンでプロファイル設定を使用せずに(Outlookの使用を含む)、PythonスクリプトでExchangeメールボックスに接続する必要があります。win32comを使用してMAPI.Sessionを作成すると、既存のプロファイルを使用して(Logon()メソッドを使用して)ログオンできますが、ユーザー名とパスワードを指定するだけです。

これは可能ですか?もしそうなら、誰かがサンプルコードを提供できますか?標準ライブラリとpywin32パッケージのみを使用したほうがいいと思います。残念ながら、ExchangeサーバーのIMAPアクセスを有効にする(そしてimaplibを使用する)ことはできません。

必要な場合:スクリプトが実行するのは、メールボックスに接続し、受信ボックス内のメッセージを実行して、内容を取得することだけです。そもそも接続が取れれば、そのためのコードを書くことができます!

Outlookについて明確にするために:Outlookはローカルマシンにインストールされますが、アカウントは設定されていません(つまり、適切なライブラリはすべて利用できますが、Outlook内の設定とは独立して操作する必要があります)。

4

4 に答える 4

138

これは古いスレッドだと知っていますが...

Exchange 2007以降またはOffice365を使用している場合は、ExchangeWebサービスを確認してください。これはExchange用の非常に包括的なSOAPベースのインターフェイスであり、他のユーザーアカウントへの委任や偽装アクセスなど、Outlookで実行できるほとんどすべてのことを実行できます。

https://docs.microsoft.com/en-us/exchange/client-developer/web-service-reference/ews-reference-for-exchange

更新:自動検出、カレンダー、受信トレイ、タスク、連絡先などをサポートするPythonEWSクライアントをPyPIでリリースしました。

from exchangelib import DELEGATE, Account, Credentials

credentials = Credentials(
    username='MYWINDOMAIN\\myusername',  # Or myusername@example.com for O365
    password='topsecret'
)
a = Account(
    primary_smtp_address='john@example.com', 
    credentials=credentials, 
    autodiscover=True, 
    access_type=DELEGATE
)
# Print first 100 inbox messages in reverse order
for item in a.inbox.all().only('subject').order_by('-datetime_received')[:100]:
    print(item.subject)
于 2010-06-18T19:21:29.223 に答える
1

その特定のユーザーとしてプロセスを実行する方法を見つける必要があります。

これを参照してください。

pywin32.CreateProcessAsUserは、下に行く必要があるパスの始まりだと思います。最後の編集。ログオンしているユーザー ハンドルは、win32security.LogonUserメソッドを使用して取得されます。

于 2008-11-14T22:03:54.473 に答える
1

Outlook と MAPI プロファイルを使用しないと、これは不可能になると確信しています。メール管理者に Exchange サーバーで IMAP を有効にするよう甘い言葉で話しかけることができれば、あなたの生活はずっと楽になります。

于 2008-11-13T22:28:28.667 に答える