⚡ Архитектура и идеи: Автоматизация почты через Cloudflare Workers
В Cloudflare Email Routing есть возможность направить входящие письма не только на обычный почтовый ящик, но и на Cloudflare Worker (опция «Send to a Worker»).
Это превращает каждое входящее письмо в бессерверное событие (Serverless Event), открывая возможности для глубокой автоматизации без необходимости поднимать и оплачивать выделенный почтовый сервер.
🎯 Ключевые сценарии использования
Входящее письмо (@fortemate.com)
│
▼
┌───────────────────────────────┐
│ Cloudflare Email Worker │
└───────┬──────────────┬────────┘
│ │
▼ ▼
┌──────────────┐ ┌──────────────┐
│ Telegram / │ │ Workers AI │
│ Discord Бот │ │ (Суммаризация│
│ (Алерты) │ │ и анализ) │
└──────────────┘ └──────────────┘
│ │
▼ ▼
┌──────────────┐ ┌──────────────┐
│ GitHub Issue │ │ Cloudflare │
│ (Баг-трекер)│ │ R2 / D1 │
│ │ │ (Архив) │
└──────────────┘ └──────────────┘
1. Мгновенные алерты в Telegram / Discord
- Проблема: Личный ящик засоряется системными уведомлениями, либо важные письма (например, от партнеров или срочные багрепорты) теряются в потоке.
- Решение: Worker парсит отправителя, тему и текст письма, красиво форматирует Markdown-сообщение и отправляет в приватный Telegram-канал команды за доли секунды.
- Применение: Адреса
support@fortemate.com,alert@fortemate.com.
2. Встроенный ИИ-анализ через Cloudflare Workers AI
- Проблема: Длинные входящие письма или обращения на незнакомых языках требуют времени на разбор.
- Решение: Worker прямо на лету передает текст письма в открытую LLM (например,
@cf/meta/llama-3-8b-instruct), получает краткую выжимку (TL;DR), определяет тональность и категорию (баг, сотрудничество, спам), и прикрепляет этот отчет к пересылаемому сообщению.
3. Автоматическое создание GitHub Issues (Helpdesk без сервитута)
- Проблема: Пользователь пишет на
feedback@fortemate.comс сообщением о баге, приходится вручную копировать его в репозиторий. - Решение: Worker вызывает GitHub REST API и автоматически создает Issue в соответствующем репозитории с тегом
from-email.
4. Долгосрочный архив в Cloudflare R2 / D1
- Проблема: Почтовые сервисы имеют лимиты на размер вложений и требуют оплаты за хранилище.
- Решение: Worker сохраняет копию raw MIME-письма или прикрепленные файлы в дешевое хранилище Cloudflare R2, а метаданные (кто, когда, тема) записывает в реляционную базу Cloudflare D1.
💻 Пример реализации (TypeScript)
1. Исходный код воркера (src/index.ts)
import { EmailMessage } from 'cloudflare:email';
interface Env {
TG_BOT_TOKEN: string;
TG_CHAT_ID: string;
FORWARD_TO: string;
AI?: any;
}
export default {
async email(message: ForwardableEmailMessage, env: Env, ctx: ExecutionContext): Promise<void> {
const from = message.from;
const to = message.to;
const subject = message.headers.get('subject') || '(Без темы)';
// 1. Извлекаем текстовое содержимое
const rawContent = await new Response(message.raw).text();
const preview = rawContent.slice(0, 500); // превью первых строк
// 2. Отправляем форматированное уведомление в Telegram
const text = `📬 *Новое письмо на ${to}*\n*От:* \`${from}\`\n*Тема:* ${subject}\n\n_${preview}..._`;
ctx.waitUntil(
fetch(`https://api.telegram.org/bot${env.TG_BOT_TOKEN}/sendMessage`, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
chat_id: env.TG_CHAT_ID,
text: text,
parse_mode: 'Markdown'
})
})
);
// 3. Пересылаем оригинальное письмо в почтовый ящик
await message.forward(env.FORWARD_TO);
}
};2. Конфигурация wrangler.toml
name = "fortemate-email-worker"
main = "src/index.ts"
compatibility_date = "2026-08-16"
[vars]
FORWARD_TO = "jegors.cemisovs@outlook.lv"
# Секреты (задаются через: npx wrangler secret put TG_BOT_TOKEN)
# TG_BOT_TOKEN
# TG_CHAT_ID🚀 План внедрения (когда наступит необходимость)
- Этап 0 (текущий): Обычная пересылка через UI Cloudflare Email Routing на личный адрес — для захвата аккаунтов и базового старта бренда.
- Этап 1 (публичный запуск сайта): Подключение адреса
support@fortemate.comчерез Worker с алертами в Telegram, чтобы не пропустить обратную связь первых игроков. - Этап 2 (масштабирование): Подключение Workers AI для авто-классификации и детекции баг-репортов.