Files
windmill_workflow/test_imap.py

84 lines
2.7 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"""
IMAP接続診断スクリプト
使い方: python test_imap.py
"""
import imaplib
import ssl
import getpass
HOST = "outlook.office365.com"
PORT = 993
USER = "akiracraftworl@infoseek.jp"
print(f"IMAP診断: {HOST}:{PORT}")
print(f"ユーザー: {USER}")
print()
# --- Step 1: SSL接続テスト認証なし---
print("[1] SSL接続テスト...")
try:
ssl_ctx = ssl.create_default_context()
mail = imaplib.IMAP4_SSL(HOST, PORT, ssl_context=ssl_ctx)
print(" ✓ SSL接続成功")
except Exception as e:
print(f" ❌ SSL接続失敗: {e}")
exit(1)
# --- Step 2: サーバーの認証方式を確認 ---
print("[2] サーバー対応認証方式を確認...")
try:
typ, caps_data = mail.capability()
caps = caps_data[0].decode() if caps_data and caps_data[0] else ""
print(f" CAPABILITY: {caps}")
if "AUTH=PLAIN" in caps or "AUTH=LOGIN" in caps:
print(" ✓ 基本認証(パスワード)が使えます")
basic_auth_supported = True
else:
basic_auth_supported = False
if "AUTH=XOAUTH2" in caps or "AUTH=OAUTHBEARER" in caps:
print(" ⚠ モダン認証OAuth2が必要な可能性があります")
if not basic_auth_supported:
print(" ❌ 基本認証は対応していません → OAuth2が必要です")
mail.logout()
exit(1)
except Exception as e:
print(f" CAPABILITY取得エラー: {e}")
# --- Step 3: ログインテスト ---
print("[3] ログインテスト...")
password = getpass.getpass(" パスワードを入力: ")
try:
mail.login(USER, password)
print(" ✓ ログイン成功!")
mail.select("INBOX")
_, data = mail.uid("SEARCH", None, "ALL")
uids = data[0].split() if data[0] else []
print(f" ✓ INBOX: {len(uids)}")
mail.logout()
print()
print("✅ 成功Windmillに登録できます。")
except imaplib.IMAP4.error as e:
err = str(e)
print(f" ❌ ログイン失敗: {err}")
print()
if "disabled" in err.lower() or "imap" in err.lower():
print(" 原因: IMAPが無効化されています")
print(" 対処: https://outlook.live.com → 設定 → メールの同期 → IMAPを有効化")
elif "AUTHENTICATE" in err or "XOAUTH" in err:
print(" 原因: モダン認証OAuth2が必要です")
else:
print(" 原因1: パスワードが間違っている")
print(" 原因2: IMAPが無効Outlook.com設定を再確認")
print(" 原因3: モダン認証が必要")
print()
print(" 確認してください:")
print(" → https://outlook.live.com にこのメアドとパスワードでログインできますか?")
except Exception as e:
print(f" ❌ エラー: {type(e).__name__}: {e}")