本文档介绍了如何使用 Gmail API 创建和发送电子邮件。
您可以通过两种方式使用 Gmail API 发送电子邮件:
- 您可以使用
messages.send方法直接发送。 - 您可以使用
drafts.send方法从草稿中发送邮件。如需详细了解如何发送草稿消息,请参阅发送草稿。
Gmail 邮件以 base64网址 编码的字符串形式在 messages 资源的 raw 字段中发送。如需发送电子邮件,请执行以下操作:
- 创建电子邮件内容并将其编码为 base64网址 字符串。
- 创建新的消息资源,并将其
raw属性设置为您刚刚创建的 base64网址 字符串。 - 调用
messages.send方法(如果发送的是草稿,则调用drafts.send方法)来发送消息。
此工作流程的详细信息可能会因您选择的客户端库和编程语言而异。
创建消息
Gmail API 需要符合 RFC 2822 且编码为 base64网址 字符串的 MIME 电子邮件。许多编程语言都有库或实用程序,可简化创建和编码 MIME 消息的过程。
以下代码示例展示了如何使用适用于各种语言的 Google API 客户端库创建 MIME 消息:
Java
使用 javax.mail.internet 软件包中的 MimeMessage 类可以简化电子邮件消息的创建过程。以下代码示例展示了如何创建电子邮件,包括邮件头:
接下来,对 MimeMessage 进行编码,实例化 messages 对象,并将 base64网址 编码的消息字符串设置为 raw 属性的值。
Python
以下代码示例展示了如何创建 MIME 消息、将其编码为 base64网址 字符串,并将其分配给 messages 资源的 raw 字段:
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:采用 RFC 2822 格式的 MIME 消息,以 base64网址 编码。
创建包含附件的消息
创建含附件的消息与创建任何其他消息类似,但将文件作为多部分 MIME 消息上传的过程取决于编程语言。
以下代码示例展示了创建包含附件的多部分 MIME 消息的可能方式:
Java
以下代码示例展示了如何创建多部分 MIME 消息。编码和分配步骤与创建消息相同。
Python
与创建消息示例类似,此示例也会处理将消息编码为 base64网址 并将其分配给 messages 资源的 raw 字段。
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:包含附件的 RFC 2822 格式的 MIME 消息,以 base64网址 编码。
发送消息
创建消息后,您可以在 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:采用 RFC 2822 格式的 MIME 消息,以 base64网址 编码。
如果您尝试发送回复,并希望将电子邮件归入会话,请确保:
Subject标头匹配References和In-Reply-To标头遵循 RFC 2822 标准。