Интеграция с Web3 email (Mailchain, EtherMail)
Классическая проблема dApp-коммуникации: у вас есть адрес кошелька пользователя, но нет способа отправить ему уведомление. Email требует регистрацию, push-уведомления — явное разрешение браузера, on-chain события пользователь не мониторит постоянно. Web3 email решает это, привязывая почтовый адрес к кошельку без регистрации через традиционный email.
Mailchain
Mailchain использует адрес кошелька как почтовый ящик: [email protected]. Протокол хранит зашифрованные сообщения децентрализованно, пользователь читает их через Mailchain-клиент или API, аутентифицируясь подписью кошелька.
Отправка из бэкенда:
import { Mailchain } from '@mailchain/sdk';
const mailchain = Mailchain.fromSecretRecoveryPhrase(process.env.MAILCHAIN_SECRET!);
await mailchain.sendMail({
from: await mailchain.user().address, // адрес вашего приложения
to: ['[email protected]'],
subject: 'Your transaction was confirmed',
content: {
text: 'Transaction 0xabc... confirmed in block 19000000',
html: '<p>Transaction <b>0xabc...</b> confirmed</p>',
},
});
Mailchain поддерживает адресацию по ENS-именам ([email protected]), Lens Protocol, XMTP и другим протоколам.
EtherMail
EtherMail — более маркетинг-ориентированный продукт: пользователи регистрируют [email protected], привязывая к кошельку. Для отправщиков (проектов) есть API для email-кампаний с on-chain сегментацией аудитории.
Интеграция через REST API — стандартный HTTP POST с JWT-авторизацией. Подходит больше для массовых рассылок (аirdrop-уведомления, governance alerts), чем для транзакционных сообщений.
XMTP как альтернатива
XMTP (Extensible Message Transport Protocol) — открытый протокол для peer-to-peer обмена сообщениями между кошельками. Не email в классическом смысле, но решает ту же задачу: уведомить пользователя по адресу кошелька.
import { Client } from '@xmtp/xmtp-js';
import { Wallet } from 'ethers';
const signer = new Wallet(process.env.PRIVATE_KEY!);
const xmtp = await Client.create(signer, { env: 'production' });
const conversation = await xmtp.conversations.newConversation('0xRecipient...');
await conversation.send('Your limit order was filled at $2,450');
Перед отправкой проверяйте, что получатель зарегистрирован в XMTP: await Client.canMessage('0xAddress'). Отправка незарегистрированному адресу бросает исключение.
Когда что использовать
Mailchain — для транзакционных уведомлений с rich-content (HTML), когда пользователь уже в экосистеме Mailchain.
EtherMail — для маркетинговых рассылок с сегментацией по on-chain критериям.
XMTP — для real-time p2p коммуникации внутри dApp (чат между трейдерами, уведомления от протокола).
Ни один из этих протоколов не покрывает 100% пользователей — большинство кошельков не зарегистрированы ни в одном из них. Для надёжной доставки уведомлений по-прежнему нужен опциональный сбор email при onboarding'е.







