Как обновить Refresh Token для Hotmail и Outlook: руководство по Graph, IMAP и POP3 OAuth2

Opublikovano 8 сент. 2026 г.0 min chteniyaObnovleno 8 сент. 2026 г.Kolichestvo prosmotrov 2

В этой статье объясняется, как работает токен обновления для Hotmail/Outlook, зачем он нужен при получении писем через Microsoft Graph, IMAP и POP3 OAuth2, а также как обновить его до истечения срока действия. Материал включает примеры Python-кода для одного аккаунта и массового обновления аккаунтов, подходит для пользователей, которым нужны массовые аккаунты Hotmail, оптовые аккаунты Outlook, прием писем с кодами подтверждения и автоматизированное управление почтой.

Refresh Token является важной частью получения почты Hotmail и Outlook через OAuth2. Если вы используете Microsoft Graph, IMAP OAuth2 или POP3 OAuth2 для чтения писем, Refresh Token помогает поддерживать авторизацию и при необходимости запрашивать новые временные Access Tokens.

Refresh Tokens для аккаунтов Hotmail/Outlook обычно действительны в течение 90 дней с момента создания, поэтому их рекомендуется обновлять до истечения срока действия.

Для пользователей, которые покупают аккаунты Hotmail оптом, приобретают оптовые аккаунты Outlook, получают письма с кодами подтверждения или управляют большим количеством почтовых аккаунтов через автоматизацию, своевременное обновление Refresh Token помогает сократить перебои при входе и повысить стабильность долгосрочного приема почты.

Содержание

  1. Что такое токен обновления

  2. Как Graph, IMAP и POP3 используют токены

  3. Когда нужно обновлять токен обновления

  4. Как обновить токен обновления

  5. Python-пример для одного аккаунта

  6. Python-пример для массового обновления аккаунтов

  7. Автоматическое обновление токенов в сторонних почтовых программах

  8. Важные замечания перед обновлением токенов

1. Что такое токен обновления

Токен обновления (Refresh Token) — это долгосрочный авторизационный ключ, который используется в OAuth2.0.

Проще говоря, пароль подтверждает данные входа в аккаунт, а токен обновления помогает сохранять авторизованный доступ для получения писем. Когда программа читает почту через Graph, IMAP OAuth2 или POP3 OAuth2, она использует токен обновления и Client ID, чтобы получить временный токен доступа.

Токен доступа (Access Token) действует недолго. Он используется для конкретного запроса к почте. Токен обновления действует дольше и позволяет получать новые токены доступа до тех пор, пока сам токен обновления остается действительным.

Аккаунты Hotmail007, которые поддерживают получение почты через токены, обычно выдаются в следующем формате:

email:password:refreshToken:clientId

2. Как Graph, IMAP и POP3 используют токены

Graph, IMAP и POP3 — это разные способы получения писем Hotmail/Outlook.

Graph — это современный API Microsoft для доступа к данным Outlook, включая письма, папки и почтовые сообщения. Он часто используется для чтения писем с кодами подтверждения, автоматического получения почты, массового управления аккаунтами Hotmail/Outlook и интеграции с собственными системами.

IMAP и POP3 — это классические почтовые протоколы для получения писем. Если используется OAuth2.0, то для подключения через IMAP или POP3 также нужен токен доступа.

Главная логика простая:

  • токен обновления используется для поддержания авторизации;

  • токен доступа используется для фактического доступа к почте;

  • Graph, IMAP и POP3 используют разные токены доступа;

  • возможность использовать Graph, IMAP или POP3 зависит от типа аккаунта и подключенных функций.

Если аккаунт Hotmail/Outlook поддерживает только Graph, его нельзя использовать для IMAP-входа. Если аккаунт поддерживает и IMAP, и Graph, актуальный токен обновления можно использовать для получения нужного токена доступа в рамках поддерживаемого способа получения почты.

3. Когда нужно обновлять токен обновления

Токен обновления (Refresh Token) для аккаунтов Hotmail/Outlook обычно действителен в течение 90 дней с момента создания, поэтому его рекомендуется обновлять до истечения срока действия.

Обновлять токен стоит в следующих случаях:

  • токен скоро истечет;

  • нужен долгосрочный автоматический прием писем;

  • вы управляете большим количеством аккаунтов Hotmail или Outlook;

  • ваш скрипт или система использует Graph, IMAP или POP3 OAuth2;

  • нужно стабильно получать письма с кодами подтверждения.

Если токен обновления уже истек или был отозван, обновление может завершиться ошибкой. В таком случае потребуется новый действительный токен или новые авторизационные данные аккаунта.

4. Как обновить токен обновления

При запросе токена доступа добавьте offline_access в scope. Если запрос выполнен успешно и в ответе есть новое поле refresh_token, его нужно сохранить.

Для получения почты через Graph обычно используется scope:

https://graph.microsoft.com/.default offline_access

Для IMAP OAuth2:

https://outlook.office.com/IMAP.AccessAsUser.All offline_access

Для POP3 OAuth2:

https://outlook.office.com/POP.AccessAsUser.All offline_access

Scope указывает, какой тип токена доступа нужен для текущего сценария. Это не означает, что пользователю нужно вручную хранить несколько разных токенов обновления.

После успешного обновления нужно сохранить новую полную строку аккаунта. В этой строке старый токен обновления уже заменен на новый. Для последующего приема писем, повторного обновления токена или импорта в сторонние инструменты рекомендуется использовать именно новую строку аккаунта.

5. Python-пример для обновления одного аккаунта

Этот пример обновляет токен обновления для одного аккаунта Hotmail/Outlook и выводит новую полную строку аккаунта.

import requests

TOKEN_ENDPOINT = "https://login.microsoftonline.com/consumers/oauth2/v2.0/token"
DEFAULT_SCOPE = "https://graph.microsoft.com/.default offline_access"


def parse_account(account_line):
    parts = account_line.strip().split(":")
    if len(parts) < 4:
        raise ValueError("Expected format: email:password:refreshToken:clientId")

    email = parts[0]
    password = parts[1]
    client_id = parts[-1]
    refresh_token = ":".join(parts[2:-1])

    return email, password, refresh_token, client_id


def update_refresh_token(refresh_token, client_id, scope=DEFAULT_SCOPE):
    response = requests.post(
        TOKEN_ENDPOINT,
        data={
            "client_id": client_id,
            "grant_type": "refresh_token",
            "refresh_token": refresh_token,
            "scope": scope,
        },
        timeout=30,
    )

    result = response.json()

    if response.status_code != 200:
        raise RuntimeError(result)

    new_refresh_token = result.get("refresh_token")
    if not new_refresh_token:
        raise RuntimeError("No new refresh_token returned. Please check scope and account status.")

    return new_refresh_token, result.get("expires_in")


def main():
    account = "email:password:refreshToken:clientId"

    email, password, old_refresh_token, client_id = parse_account(account)
    new_refresh_token, expires_in = update_refresh_token(old_refresh_token, client_id)

    updated_account = f"{email}:{password}:{new_refresh_token}:{client_id}"

    print("New account line:")
    print(updated_account)
    print("Access token expires in:")
    print(expires_in)


if __name__ == "__main__":
    main()

После запуска кода сохраните всю строку, которая выводится под New account line. Эта строка уже содержит новый токен обновления.

6. Python-пример для массового обновления аккаунтов

Если вы управляете большим количеством аккаунтов Hotmail/Outlook, можно поместить их в один файл и обновить токены массово.

Создайте файл:

email_accounts_to_update.txt

Добавьте аккаунты по одному в каждой строке:

email1:password:refreshToken:clientId
email2:password:refreshToken:clientId
email3:password:refreshToken:clientId

Затем используйте следующий Python-код:

from concurrent.futures import ThreadPoolExecutor, as_completed
from pathlib import Path
import time

import requests

TOKEN_ENDPOINT = "https://login.microsoftonline.com/consumers/oauth2/v2.0/token"
DEFAULT_SCOPE = "https://graph.microsoft.com/.default offline_access"

INPUT_FILE = Path("email_accounts_to_update.txt")
MAX_WORKERS = 10
RETRY_TIMES = 3


def parse_account(account_line):
    parts = account_line.strip().split(":")
    if len(parts) < 4:
        raise ValueError("Expected format: email:password:refreshToken:clientId")

    email = parts[0]
    password = parts[1]
    client_id = parts[-1]
    refresh_token = ":".join(parts[2:-1])

    return email, password, refresh_token, client_id


def request_new_refresh_token(refresh_token, client_id, scope=DEFAULT_SCOPE):
    last_error = None

    for attempt in range(1, RETRY_TIMES + 1):
        try:
            response = requests.post(
                TOKEN_ENDPOINT,
                data={
                    "client_id": client_id,
                    "grant_type": "refresh_token",
                    "refresh_token": refresh_token,
                    "scope": scope,
                },
                timeout=30,
            )

            result = response.json()

            if response.status_code == 200 and result.get("refresh_token"):
                return result["refresh_token"]

            last_error = result

        except Exception as error:
            last_error = str(error)

        if attempt < RETRY_TIMES:
            time.sleep(attempt * 2)

    raise RuntimeError(last_error)


def update_account(account_line):
    email, password, old_refresh_token, client_id = parse_account(account_line)
    new_refresh_token = request_new_refresh_token(old_refresh_token, client_id)
    return f"{email}:{password}:{new_refresh_token}:{client_id}"


def main():
    account_lines = [
        line.strip()
        for line in INPUT_FILE.read_text(encoding="utf-8").splitlines()
        if line.strip()
    ]

    updated_accounts = []
    failed_accounts = []

    with ThreadPoolExecutor(max_workers=MAX_WORKERS) as executor:
        tasks = {
            executor.submit(update_account, account): account
            for account in account_lines
        }

        for task in as_completed(tasks):
            original_account = tasks[task]
            try:
                updated_accounts.append(task.result())
            except Exception as error:
                failed_accounts.append(f"{original_account} | {error}")

    updated_file = Path(f"email_accounts_updated_{len(updated_accounts)}.txt")
    failed_file = Path(f"email_accounts_failed_{len(failed_accounts)}.txt")

    updated_file.write_text("\n".join(updated_accounts), encoding="utf-8")
    failed_file.write_text("\n".join(failed_accounts), encoding="utf-8")

    print(f"Total: {len(account_lines)}")
    print(f"Updated: {len(updated_accounts)}")
    print(f"Failed: {len(failed_accounts)}")
    print(f"Updated file: {updated_file}")
    print(f"Failed file: {failed_file}")


if __name__ == "__main__":
    main()

Имя выходного файла будет содержать количество успешно обновленных аккаунтов. Например:

email_accounts_updated_98.txt
email_accounts_failed_2.txt

Файл с обновленными аккаунтами можно использовать для дальнейшего приема писем, обслуживания токенов или импорта в вашу систему.

7. Автоматическое обновление токенов в сторонних почтовых программах

Некоторые сторонние программы для приема почты автоматически обновляют токены после импорта аккаунта. В таком случае программа может получать новый токен доступа при каждом чтении писем, а если в ответе возвращается новый токен обновления, она сохраняет его в своей системе.

Поэтому пользователь может не видеть, что токен изменился. Это может происходить автоматически внутри программы.

Hotmail007 также планирует выпустить бесплатное программное обеспечение для приема почты. После импорта аккаунтов программа сможет получать письма и обновлять токены в фоне. Если будет возвращен новый токен обновления, он будет сохранен в системе почтового ПО, чтобы пользователю не приходилось вручную обновлять токены каждый раз.

8. Важные замечания перед обновлением токенов

Перед обновлением токенов Hotmail/Outlook проверьте следующие моменты:

  • строка аккаунта должна быть полной;

  • токен обновления и Client ID должны относиться к одному аккаунту;

  • тип аккаунта должен поддерживать нужный способ получения почты;

  • аккаунты только с Graph не подходят для IMAP-входа;

  • после успешного обновления используйте самую новую строку аккаунта;

  • не публикуйте токены обновления в открытом доступе;

  • если обновление не удалось, проверьте статус аккаунта, срок действия токена, scope и сетевую среду.

Для массовых аккаунтов Hotmail, оптовых аккаунтов Outlook, приема писем с кодами подтверждения и автоматизированного управления почтой лучше обновлять токены заранее, а не ждать ошибки получения писем.

Заключение

Обновление токена обновления Hotmail/Outlook важно для долгосрочного получения писем через Graph, IMAP и POP3 OAuth2. Основное правило простое: используйте токен обновления и Client ID для запроса нового токена доступа, добавляйте offline_access при обновлении и сохраняйте новый токен обновления, если он возвращается в ответе.

Для пользователей, которым нужны массовые аккаунты Hotmail, оптовые аккаунты Outlook, Graph-получение, IMAP OAuth2, POP3 OAuth2 или автоматическое чтение писем с кодами подтверждения, своевременное обновление токенов помогает сделать работу с аккаунтами более стабильной.

Pokhozhie statyi

Byla li eta instruktsiya polezna?

Nazad ко vsem rukovodstvam

Начните профессиональный пробный период

Hotmail007 предлагает низкие цены и отличный сервис для покупки аккаунтов Hotmail и Outlook. При оптовой закупке цена ещё выгоднее.

H
Hotmail007

Добро пожаловать в Hotmail007! Мы предлагаем низкие цены и отличный сервис для покупки аккаунтов Hotmail и Outlook. Оптовые покупки ещё выгоднее. Выбирайте из множества типов почты Hotmail и Outlook под ваши задачи.

©2026 - copyright