#send-email #microservices #leverage #programmatically #gmail #service #api

app mail-service

利用Gmail API以编程方式发送邮件的微服务

1 个不稳定版本

0.0.0 2023年4月11日

#12 in #leverage

Apache-2.0

2KB

mail-service

利用Gmail API以编程方式发送邮件的微服务。

这需要在GCP中设置一个服务帐户并启用域范围委派。有关详细信息,请参阅此处

开发

  1. 将GCP服务帐户的凭据文件(sa_creds.json)复制到项目的根目录。您可以在LastPass中找到它。

  2. 确保在docker-compose.yaml中正确设置环境变量。

  3. 启动开发服务器

这将构建Docker镜像并自动运行它,使用docker-compose.yaml中定义的配置。这可以节省您构建Docker镜像并运行带有所有标志的手动docker run命令(对于环境变量、端口等)。

docker compose up

部署到生产环境

需要在NGINX反向代理后面进行安全。

Flask是WSGI 应用。使用WSGI 服务器运行应用,将传入的HTTP请求转换为标准的WSGI环境,并将传出的WSGI响应转换为HTTP响应。

WSGI服务器具有内置的HTTP服务器。但是,专门的HTTP服务器可能更安全、更高效或更强大。在WSGI服务器前面放置HTTP服务器称为“反向代理”。

-- Flask 文档

  1. 将GCP服务帐户的凭据文件(sa_creds.json)复制到项目的根目录。您可以在LastPass中找到它。是的,这个文件会被烧录到容器中。这是一个临时解决方案,直到我们找到更好的方法,但Google的认证和认证客户端库很复杂且令人烦恼。

  2. 构建并运行生产镜像。

# Build Docker image for production:
docker build -t mail-service-api .

# Example manually running a container with environment variables and ports defined:
docker run -p 8080:80 -e SA_CREDS_LOCATION=sa_creds.json mail-service-api

API合约

健康检查

GET /

发送邮件

POST /v1/send

请求头

Content-Type application/json
X-API-KEY abc123

请求正文

{
	"recipient": string, 		// recipient's email address
	"subject": string, 			// email subject
	"base64_content": string 	// email body (base64 encoded)
}

无运行时依赖