В этом документе объясняется, как создавать и отправлять электронные письма с помощью API Gmail.
Существует два способа отправки электронных писем с использованием API Gmail:
- Вы можете отправить его напрямую, используя метод
messages.send. - Вы можете отправить его из черновика, используя метод
drafts.send. Для получения дополнительной информации об отправке черновика сообщения см. раздел «Отправка черновиков» .
Сообщения Gmail отправляются в виде строк, закодированных в base64URL, в поле raw ресурса messages . Чтобы отправить электронное письмо:
- Создайте содержимое электронного письма и закодируйте его в строку base64URL.
- Создайте новый ресурс сообщения и установите для его свойства
rawзначение созданной вами строки base64URL. - Для отправки сообщения вызовите метод
messages.send, или, если отправляете черновик, вызовите методdrafts.send.
Детали этого рабочего процесса могут различаться в зависимости от выбранной вами клиентской библиотеки и языка программирования.
Создать сообщения
API Gmail требует, чтобы электронные письма в формате MIME соответствовали RFC 2822 и были закодированы в виде строк base64URL. Во многих языках программирования существуют библиотеки или утилиты, упрощающие процесс создания и кодирования сообщений MIME.
Приведенные ниже примеры кода демонстрируют создание MIME-сообщения с использованием клиентских библиотек Google API для различных языков программирования:
Java
Создание электронного письма можно упростить с помощью класса MimeMessage из пакета javax.mail.internet . Следующий пример кода показывает, как создать электронное письмо, включая заголовки:
Далее закодируйте MimeMessage , создайте объект messages и установите закодированную в base64URL строку сообщения в качестве значения свойства raw .
Python
Приведенный ниже пример кода демонстрирует, как создать MIME-сообщение, закодировать его в строку base64URL и присвоить ее полю raw ресурса messages :
cURL
curl --request POST \
'https://gmail.googleapis.com/gmail/v1/users/me/drafts' \
--header 'Authorization: Bearer ACCESS_TOKEN' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{"message":{"raw":"MESSAGE"}}'
Замените следующее:
-
ACCESS_TOKEN: токен доступа, предоставляющий доступ к API. -
MESSAGE: MIME-сообщение в формате RFC 2822, закодированное как base64URL.
Создавайте сообщения с вложениями.
Создание сообщения с вложением аналогично созданию любого другого сообщения, но процесс загрузки файла в виде многокомпонентного MIME-сообщения зависит от языка программирования.
Приведенные ниже примеры кода демонстрируют возможные способы создания многокомпонентного MIME-сообщения с вложением:
Java
Приведенный ниже пример кода демонстрирует, как создать многокомпонентное MIME-сообщение. Шаги кодирования и присваивания аналогичны шагам создания сообщений .
Python
Аналогично примеру создания сообщений , в этом примере также обрабатывается кодирование сообщения в base64URL и присвоение его полю raw ресурса messages .
cURL
curl --request POST \
'https://gmail.googleapis.com/gmail/v1/users/me/drafts' \
--header 'Authorization: Bearer ACCESS_TOKEN' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{"message":{"raw":"MESSAGE"}}'
Замените следующее:
-
ACCESS_TOKEN: токен доступа, предоставляющий доступ к API. -
MESSAGE: MIME-сообщение в формате RFC 2822, содержащее вложение, закодированное в формате base64URL.
Отправляйте сообщения
После создания сообщения его можно отправить, указав его в теле запроса метода messages.send , как показано в следующих примерах:
Java
Python
cURL
curl --request POST \
'https://gmail.googleapis.com/gmail/v1/users/me/messages/send' \
--header 'Authorization: Bearer ACCESS_TOKEN' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{"raw":"MESSAGE"}'
Замените следующее:
-
ACCESS_TOKEN: токен доступа, предоставляющий доступ к API. -
MESSAGE: MIME-сообщение в формате RFC 2822, закодированное как base64URL.
Если вы пытаетесь отправить ответ и хотите, чтобы электронные письма были объединены в цепочку , убедитесь, что:
- Заголовки
Subjectсоответствуют - Заголовки
ReferencesиIn-Reply-Toсоответствуют стандарту RFC 2822 .