Добро пожаловать на последний день нашей серии 12 дней DigitalOcean! Мы прошли долгий путь, создавая Службу Обработки Квитанций на основе Электронной Почты, извлекающую детали квитанций из Postmark с использованием GenAI Agent от DigitalOcean, безопасно хранящую вложения в DigitalOcean Spaces и сохраняющую извлеченные данные в Google Sheets.
Сегодня мы добавим последний штрих — отправку подтверждения по электронной почте обратно отправителю с деталями квитанции, ссылками на вложения и ссылкой на таблицу Google. Этот заключительный шаг связывает все вместе, обеспечивая, что пользователи моментально получают обратную связь о том, что их квитанции были успешно обработаны.
🚀 Что вы узнаете
По окончании этого учебного пособия вы узнаете, как:
- Использовать Resend API для программной отправки подтверждения по электронной почте.
- Надежно управляйте конфиденциальными учетными данными с помощью переменных окружения.
- Форматируйте и отправляйте транзакционные электронные письма с деталями чека, ссылками на вложения и URL-адресами таблиц.
- Тестируйте и устраняйте неполадки в полном процессе обработки электронной почты.
🛠 Что вам понадобится
Если вы хотите строить параллельно, мы предполагаем, что вы следовали Дню 11: Сохранение данных и вложений чека в Google Sheets и уже имеете:
- Развернутое приложение Flask для обработки электронных писем с чеками.
- Интеграция с Google Sheets и DigitalOcean Spaces настроена.
Если вас интересует только то, как интегрировать Resend для отправки подтверждающих писем, вам потребуется:
- Учетная запись Resend: Зарегистрируйтесь на Resend.
- Ключ API: Сгенерируйте его на своей панели управления Resend.
Шаг 1: Создайте учетную запись Resend и получите API-ключ
Для программной отправки электронных писем мы будем использовать Resend, удобный для разработчиков API для отправки транзакционных электронных сообщений. Он упрощает отправку электронных писем, чтобы вам не приходилось бороться с настройкой почтового сервера, управлением конфигурациями SMTP или беспокоиться о спам-фильтрах.
-
Во-первых, перейдите на сайт Resend и зарегистрируйтесь для получения бесплатной учетной записи. После входа в систему перейдите в раздел API Keys панели управления и сгенерируйте новый API-ключ.
-
Дайте вашему API-ключу описательное имя, например,
Приложение для обработки квитанций
, и установите его разрешение наПолный доступ
. -
Копирование ключа API: Ваш ключ API будет показан только один раз—скопируйте его и сохраните в надежном месте. Вам понадобится он на следующем шаге для аутентификации вашего приложения с помощью Resend.
Шаг 2: Обновите переменные среды
Теперь, когда у нас есть ключ API Resend, давайте сохранить его как переменную среды в DigitalOcean, так же, как мы делали в течение этой серии.
Для интеграции с Resend нам нужно сохранить две переменные среды:
RESEND_API_KEY
: Ключ API, сгенерированный на шаге 1, который аутентифицирует ваше приложение с Resend.RESEND_EMAIL_FROM
: Адрес электронной почты отправителя, который вы будете использовать для отправки писем с подтверждением. Этот адрес должен быть подтвержден в вашей учетной записи Resend.
Чтобы добавить эти переменные, выполните следующие шаги:
- Перейдите на панель управления DigitalOcean App Platform, найдите свое Flask-приложение и перейдите на вкладку Настройки. В разделе Переменные окружения добавьте две переменные:
-
Ключ:
RESEND_API_KEY
- Значение: Вставьте ключ API, который вы сгенерировали на Шаге 1.
-
Ключ:
RESEND_EMAIL_FROM
- Значение: Укажите подтвержденный адрес электронной почты отправителя из вашей учетной записи Resend.
-
- Сохраните изменения, чтобы сделать ключ API Resend доступным для вашего Flask-приложения, которое мы обновим далее.
Шаг 3: Установите библиотеку Resend Python
Затем мы установим библиотеку Resend Python для работы с API. Она поможет сохранить ваш код в порядке и избежать работы с необработанными HTTP-запросами. Выполните это в вашем терминале:
Шаг 4: Обновите requirements.txt
Вместо редактирования requirements.txt
вручную, используйте pip freeze
, чтобы перечислить все установленные зависимости с точными версиями. Выполните это:
Это обновит requirements.txt
со всем, что нужно вашему приложению, включая resend
.
Шаг 5: Напишите функцию для отправки электронных писем
Теперь пришло время добавить логику для отправки писем с подтверждениями. Представьте это как отправку письма другу, чтобы сообщить, что их посылка прибыла — только здесь это квитанции.
Мы напишем функцию send_confirmation_email
, которая принимает электронную почту получателя, данные чека, ссылки на вложения и URL Google Таблицы. С помощью Resend она отформатирует это в электронное письмо и отправит его. Вот функция:
Шаг 5: Развертывание на DigitalOcean
Чтобы развернуть обновленное приложение Flask, выполните шаги из Дня 7: Создание и развертывание процессора чеков по электронной почте. Вот краткое резюме:
-
Загрузите ваш обновленный код на GitHub: После внесения необходимых изменений в ваше приложение Flask закоммитьте и загрузите обновленный код на GitHub. Это вызовет автоматическое развертывание на платформе приложений DigitalOcean.
-
Отслеживание развертывания: Вы можете отслеживать прогресс в разделе Развертывания панели управления вашего приложения.
-
Проверьте ваше развертывание: После завершения развертывания перейдите по общедоступному URL-адресу вашего приложения и протестируйте его функциональность. Вы также можете проверить журналы выполнения в панели управления, чтобы убедиться, что приложение успешно запустилось.
-
Проверка журналов выполнения: Если что-то работает не так, как ожидалось, используйте вкладку Журналы выполнения на панели управления платформы приложений для отладки проблем выполнения. Ищите ошибки, связанные с API для повторной отправки или другими компонентами приложения.
Шаг 5: Протестируйте весь рабочий процесс
Теперь, когда ваше приложение полностью настроено и готово, пришло время протестировать весь рабочий процесс. Мы убедимся, что тело электронного письма обработано, вложения декодированы и загружены в DigitalOcean Spaces, детали квитанции и URL-адреса вложений сохранены в Google Sheets, а подтверждающее письмо отправлено отправителю.
Вот как вы можете протестировать шаг за шагом:
-
Отправьте тестовое электронное письмо: Отправьте электронное письмо в Postmark с текстовым телом и вложением. Если вы не уверены, как настроить Postmark, ознакомьтесь с Днем 8: Подключение Postmark к вашему Flask приложению, где мы рассмотрели настройку Postmark для пересылки электронных писем в ваше приложение.
-
Проверка JSON активности в Postmark: В панели управления Postmark перейдите на вкладку Активность. Найдите отправленное вами электронное письмо и убедитесь, что полезная нагрузка JSON содержит текстовое тело и данные вложения, закодированные в Base64. Это подтверждает, что Postmark правильно пересылает данные электронного письма в ваше приложение, как мы настроили в День 8.
-
Отслеживание журналов: Проверьте журналы выполнения в панели управления платформы приложений DigitalOcean, чтобы убедиться, что приложение обрабатывает JSON-пакет. Вы должны увидеть журналы, показывающие, что детали квитанции были извлечены, и вложения были загружены в DigitalOcean Spaces. Вы можете получить доступ к журналам выполнения на вкладке Журналы панели управления платформы приложений DigitalOcean. Если вы не знакомы с журналами DigitalOcean, мы исследовали это во время Дня 9: Автоматизация разбора квитанций с использованием агента GenAI DigitalOcean.
-
Проверка загрузки в Spaces: Посетите ваше DigitalOcean Space, чтобы подтвердить, что файлы были успешно загружены. Вы должны увидеть вложения в вашем бакете, как настроено в День 10: Хранение вложений в DigitalOcean Spaces. Если все прошло как ожидалось, ваши URL вложений будут доступны.
-
Проверка Google Sheets: Откройте вашу Google таблицу и подтвердите, что была добавлена новая строка с деталями квитанции и URL вложений, как мы настраивали в День 11: Сохранение деталей квитанции в Google Sheets. Строка должна включать:
- Поставщик, сумма, валюта и дата, извлеченные из тела электронного письма.
- URL-адреса загруженных вложений, разделенные запятыми, в последнем столбце.
-
Проверьте подтверждающее письмо: Наконец, проверьте папку «Входящие» адреса электронной почты отправителя, чтобы убедиться, что подтверждающее письмо было получено. Это письмо должно содержать:
- Извлеченные детали чека (поставщик, сумма, валюта и дата).
- Ссылки на загруженные вложения в DigitalOcean Spaces.
- Ссылку на Google Таблицу, где зарегистрированы данные чека.
Устранение неполадок
Если рабочий процесс не работает должным образом, выполните следующие шаги для устранения неполадок:
-
Проверьте панель управления повторной отправки электронной почты на наличие ошибок: Перейдите на панель повторной отправки, чтобы узнать, произошли ли какие-либо ошибки при отправке подтверждающего письма.
-
Проверьте переменные окружения: Убедитесь, что API-ключ (
RESEND_API_KEY
) и адрес электронной почты отправителя (RESEND_EMAIL_FROM
) правильно настроены в переменных окружения на панели управления DigitalOcean App Platform. -
Проверьте журналы выполнения DigitalOcean: Откройте вкладку Журналы выполнения в вашей панели управления DigitalOcean App Platform, чтобы проверить наличие ошибок при обработке электронной почты или загрузке вложений. Эти журналы могут предоставить полезные сведения, особенно для взаимодействия с Postmark или Resend.
-
Просмотр активности Postmark: Во вкладке Активность Postmark убедитесь, что тестовое письмо было правильно перенаправлено на ваше приложение Flask. Если возникнут проблемы, Postmark отобразит ошибки, связанные с перенаправлением или проблемами конфигурации.
🎁 Завершение
Поздравляем! Вы успешно завершили серию 12 дней DigitalOcean и создали полностью функциональный Сервис обработки квитанций на основе электронной почты.
Сегодня вы:
- Интегрировали API Resend для отправки транзакционных писем.
- Настроили переменные среды для безопасного управления чувствительными учетными данными.
- Отправили письма с подтверждением с деталями квитанции, ссылками на вложения и URL-адресом таблицы.
- Протестировали полный рабочий процесс от отправки электронной почты до окончательного подтверждения.
Добавив подтверждающие письма, вы завершили проект по обработке электронных писем, извлечению деталей, хранению вложений и организации всего в Google Sheets. Это удобно для пользователей, практично и готово решать реальные проблемы.
📚 12 дней DigitalOcean
Это ставит точку в серии 12 дней DigitalOcean. За последние 12 дней мы создали два приложения для реального мира шаг за шагом. По пути вы использовали такие инструменты, как функции Serverless DigitalOcean, Платформа приложений, Spaces Object Storage, PostgreSQL, GenAI от DigitalOcean, Twilio, Google Sheets API, Postmark, PaperTrail и Resend. Каждый элемент слился воедино, образуя нечто большее, чем сумма его частей.
Вот краткое повторение того, что вы создали:
🎂 Дни 1–6: Создание сервиса напоминания о дне рождения
Это приложение отслеживает дни рождения и автоматически отправляет SMS-напоминания. Оно легковесное, без сервера и легко поддерживается.
- День 1: Настройка базы данных PostgreSQL
Создайте базу данных для хранения контактной информации. - День 2: Подключение к PostgreSQL с помощью Python
Безопасное подключение к вашей базе данных и извлечение данных. - День 3: Проверка дней рождения и отправка SMS-уведомлений
Используйте Twilio для уведомления пользователей о предстоящих днях рождения. - День 4: Развертывание в функции DigitalOcean
Разверните свое приложение в облаке с помощью функций DigitalOcean. - День 5: Автоматизация ежедневных напоминаний с триггерами
Запланируйте напоминания для автоматического запуска каждый день. - День 6: Настройка внешнего журналирования
Отслеживайте и устраняйте неполадки в вашем приложении с помощью Papertrail.
К 6-му дню у вас уже полностью автоматизированная служба, работающая в облаке. Она просто работает.
📧 Дни 7–12: Создание обработчика электронных квитанций по электронной почте
Это приложение обрабатывает электронные квитанции, извлекает необходимые детали и организует всё в базе данных.
- День 7: Создание и развертывание Flask-приложения
Настройте легкое приложение для обработки электронных квитанций. - День 8: Интеграция Postmark для обработки электронной почты
Перенаправляйте электронные письма в ваше приложение для обработки. - День 9: Извлечение и очистка данных с помощью GenAI от DigitalOcean
Используйте GenAI для извлечения структурированных данных из содержимого электронной почты. - День 10: Настройка DigitalOcean Spaces для безопасного хранения
Храните вложения к электронным письмам безопасно с помощью объектного хранилища. - День 11: Сохранение данных чеков в Google Таблицы
Организуйте структурированные данные в таблице для легкого доступа. - День 12: Отправка писем с подтверждением
Уведомляйте пользователей о успешно обработанных чеках.
К 12-му дню вы создали полноценный инструмент, который обрабатывает чеки от начала до конца.
Что Вы Узнали
- Хранение и Управление Данными: Вы использовали PostgreSQL для хранения структурированных данных и Google Таблицы для удобного, общедоступного журналирования данных.
- Автоматизация рабочих процессов: С помощью Функций DigitalOcean и запуска триггеров по расписанию вы автоматизировали процессы и заставили ваши приложения работать как по расписанию.
- Добавление интеллекта в ваши приложения: Интегрируя GenAI от DigitalOcean, вы внедрили интеллектуальное извлечение и организацию данных в ваши рабочие процессы, сделав ваши приложения более умными и функциональными.
- Безопасная работа с файлами: Вы использовали Spaces DigitalOcean для хранения и управления файлами надежным и масштабируемым способом.
- Улучшение приложений с помощью API: API, такие как Twilio, Postmark и Resend, добавили функционал, такой как уведомления по SMS, пересылка электронных писем и письма с подтверждением в ваши приложения.
- Отладка и мониторинг: Используя инструменты, такие как Papertrail, вы научились эффективно отлаживать и мониторить ваши приложения, обеспечивая их бесперебойную работу.
Что дальше
Это только начало — то, что вы узнали здесь, можно применить к бесчисленным другим проектам. Вот несколько способов продолжить движение вперед:
- Присоединяйтесь к обсуждению на Discord от DigitalOcean, чтобы общаться с другими разработчиками, делиться тем, что вы построили, и получать вдохновение.
- Исследуйте больше в нашей библиотеке учебных пособий, чтобы получить больше идей и проектов.
Если вы следуете за мной, мне было бы интересно увидеть, что вы создаете — не стесняйтесь делиться своими успехами или отзывами со мной в Twitter.
Делайте все просто. Создавайте что-то полезное. Успешного творчества! 🚀
Source:
https://www.digitalocean.com/community/tutorials/sending-confirmation-emails-with-resend