バッチ処理で自動でメール送信をしたいのですがうまくいきません。原因は何でしょうか?

MS 金122 0 評価のポイント
2024-05-19T02:52:23.3266667+00:00

いろいろ調べたのですが原因が全くわかりませんでしたので、すみませんが教えてください。

Pythonのバッチ処理でMS365のOutlookメール送信を実現したいため、以下ロジックを組みました。

    from O365 import Account, FileSystemTokenBackend
    import os

    credentials = ('xxxxx', 'yyyyy')

    tenant_id = 'zzzzz'
    token_backend = FileSystemTokenBackend(token_path=os.getcwd()+'/token_folder/', token_filename='my_token.txt')
    account = Account(credentials, auth_flow_type='credentials', tenant_id=tenant_id, token_backend=token_backend)

    if account.authenticate():
        print('Authenticated!')

        mailbox = account.mailbox('aaa@bbb.ccc')
        m = mailbox.new_message()
        m.to.add('aaa@bbb.ccc')
        m.subject = 'テストメールです'
        m.body = "メール送信テストです"
        m.save_message()
        m.send()

*キー値などは適当な文字列に置き換えています

上記ロジックを実行したところ
「requests.exceptions.HTTPError: 404 Client Error: Not Found for url: https://graph.microsoft.com/v1.0/users/aaa@bbb.ccc/mailFolders/Drafts/messages | Error Message: The requested user 'aaa@bbb.ccc' is invalid.」
のエラーとなり、メール送信ができませんでした。

「'Authenticated'」のデバッグは表示されており、かつ、取得できたトークンの有効期限も確認したのですが、1時間後で有効期限切れはありませんでした。
「aaa@bbb.ccc」のメールアドレスも有効なもの(普段メール送受信ができているもの)なので、無効なはずはない認識です。
Azure portalの「アプリの登録」画面で「Mail.Send」と「Mail.ReadWrite」に「委任されたアクセス許可」でアクセス権を与えているため、必要な事前設定はすべて実施した認識です。

何が悪いかわかりますでしょうか?

お忙しいところ恐縮ですが、よろしくお願いいたします

Azure
Azure
Microsoft が管理する世界のデータ センター ネットワークを介してアプリケーションとサービスを構築、配置、および管理するインフラストラクチャおよびクラウド コンピューティング プラットフォーム。
153 件の質問
0 件のコメント コメントはありません
{count} 件の投票