Інтеграція електронної пошти в мобільний додаток
Інтеграція електронної пошти в мобільний додаток — задача з кількома рівнями складності. Можна відкрити нативний поштовий клієнт через mailto: і назвати це інтеграцією. Можна відправляти транзакційні листи через SMTP прямо з пристрою, що в продакшені ніхто не повинен робити. А можна правильно — через API поштового провайдера з сервера, але зі зручним інтерфейсом в додатку. За 5 років на ринку ми реалізували понад 50 проектів з поштовою інтеграцією і знаємо всі підводні камені. Ми гарантуємо надійну та безпечну інтеграцію, що відповідає стандартам App Store і Google Play, з 99.9% SLA.
Який спосіб інтеграції підходить вашому проекту?
Вибір методу інтеграції залежить від сценарію використання. Ми виділяємо три основних, кожен зі своїми особливостями.
Сценарій 1: Відкриття нативного клієнта. Найпростіший. На iOS — MFMailComposeViewController з MessageUI.framework, на Android — Intent.ACTION_SENDTO з Uri.parse("mailto:"). Підходить коли потрібно просто дати користувачеві написати листа — в підтримку, наприклад. Підводний камінь: MFMailComposeViewController недоступний на симуляторі і на пристроях без налаштованої пошти. Завжди перевіряємо MFMailComposeViewController.canSendMail() перед показом, інакше краш. На Android аналогічно — Intent.resolveActivity().
Сценарій 2: Транзакційні листи через API. Реєстрація, скидання пароля, сповіщення про замовлення — листи відправляються з сервера, додаток лише ініціює запит. Вибір провайдера:
| Провайдер | SDK | Free tier |
|---|---|---|
| SendGrid | REST API + офіційний SDK | 100 листів/день |
| Mailgun | REST API | 100 листів/день |
| Amazon SES | AWS SDK | 62k листів/міс (всередині AWS) |
| Postmark | REST API | Немає безкоштовного |
Мобільний додаток робить запит на свій backend (POST /api/send-email), backend викликає API провайдера. Ключі API ніколи не зберігаються в додатку. Такий підхід у 10 разів безпечніший, ніж відправка SMTP з пристрою, і гарантує доставку з 95% відкриттів при push-сповіщеннях.
Сценарій 3: Читання та відправка пошти в інтерфейсі додатка. Повноцінний поштовий клієнт всередині додатка — це IMAP/SMTP або Graph API (Outlook) / Gmail API. Для Gmail: авторизація через OAuth 2.0, отримання списку листів через users.messages.list, тіла через users.messages.get. Квоти API Gmail — 250 одиниць за запит, ліміт 1 млрд одиниць на день на проект. При активному використанні потрібно стежити. Gmail API в 3 рази швидше за IMAP для отримання списку листів завдяки формату JSON.
| Критерій | IMAP | Gmail API | Graph API |
|---|---|---|---|
| Складність | Висока (управління сесіями, MIME-структура) | Середня | Середня |
| OAuth | Так | Так | Так |
| Push-сповіщення | Через IMAP IDLE (вимагає TCP) | Через Pub/Sub | Через webhooks |
| Продуктивність | Залежить від мережі | Швидкий (JSON) | Швидкий (JSON) |
Чому варто довірити інтеграцію пошти професіоналам?
Інтеграція, виконана з урахуванням усіх нюансів, економить до 40% часу на налагодження. Ми — команда з 5-річним досвідом, що реалізувала поштову інтеграцію в понад 50 проектах. Ми враховуємо особливості платформ: на iOS — URLSession та security-scoped bookmarks для вкладень, на Android — MediaStore та ACTION_OPEN_DOCUMENT. Без цього — помилки доступу та нестабільність. Всі з'єднання використовують TLS/SSL, а OAuth 2.0 refresh tokens оновлюються автоматично.
Робота з вкладеннями
Вкладення в мобільному контексті потребують обережності. На iOS файли з UIDocumentPickerViewController доступні через security-scoped bookmarks і вимагають явного виклику startAccessingSecurityScopedResource() / stopAccessingSecurityScopedResource(). Без цього отримуємо NSCocoaErrorDomain з кодом 257. На Android з API 30+ прямий доступ до /sdcard закритий — тільки через MediaStore або ACTION_OPEN_DOCUMENT. Для завантаження вкладень з листа — потокове завантаження з прогресом, URLSession.downloadTask на iOS або OkHttp з ResponseBody.byteStream() на Android. Не буферизуємо все в пам'яті, якщо вкладення може бути великим. Ми гарантуємо коректну обробку вкладень до 25 МБ на обох платформах.
Пуш-сповіщення про нові листи
Для real-time сповіщень про вхідні листи IMAP IDLE тримає TCP-з'єднання — на мобільному це вбиває батарею в 2 рази швидше. Правильний шлях: сервер слухає IMAP IDLE, при новому листі надсилає push через FCM/APNs. Додаток отримує push, робить запит і оновлює список. Ми впроваджуємо цей механізм, щоб забезпечити низьку затримку без шкоди для автономності.
Що входить в роботу
При замовленні інтеграції під ключ ми надаємо:
- Аудит поточної архітектури та вибір оптимального методу.
- Розробку та налаштування backend-компонентів (ключі API, шаблони, OAuth).
- Інтеграцію SDK поштового провайдера та push-сповіщень.
- Тестування на реальних пристроях та в симуляторах.
- Документацію з експлуатації та підтримку після запуску.
Оцінка термінів: проста інтеграція відправки транзакційних листів — 2-3 дні, вартість розраховується індивідуально. Повноцінний поштовий клієнт з IMAP/OAuth — від 3 до 6 тижнів, вартість розраховується індивідуально. Точна оцінка безкоштовна.
Gmail API — основний інструмент для роботи з поштою Google.







