Mailjet 是一项第三方全球电子邮件服务,该服务为 Compute Engine 用户提供一个免费层级,每月可免费发送 6,000 封电子邮件。此外,Mailjet 还提供以下功能和特性:
- 用于发送交易和营销电子邮件的 API、界面和 SMTP 中继。
- 符合欧洲数据隐私合规要求。
- 电子邮件和可递送性功能,例如可自定义的优先级设置和自动限制管理。
- Go、PHP、Nodejs、Java、Python 和 Ruby 版 API 资源库,用于管理子账号、身份验证、联系人、广告系列、自定义载荷、统计信息、实时事件以及通过 Event API 进行解析。
- 集成的 MJML 框架,用于创建自适应 HTML 电子邮件模板。
- 全天候提供 4 种以上语言支持。
- 支持从
gmail.com
以外的网域发送电子邮件。
本文档介绍如何使用以下方法配置虚拟机实例以通过 Mailjet 发送邮件:
- 通过 SMTP 中继使用以下项发送:
- Postfix
- Node.js 上的 Nodemailer
- 直接通过使用 Java 的 Mailjet API 发送
有关其他电子邮件解决方案的详尽文档,包括与最常见 SMTP 服务器、库和框架集成的示例,请参阅 Mailjet 的文档。
准备工作
在 Mailjet 的 Google 合作伙伴页面* 上创建一个新的 Mailjet 账号。 注册时,请提供您要用来发送电子邮件的网域和电子邮件地址。
确保您要从中发送电子邮件的电子邮件地址已通过验证。
设置防火墙规则以允许 TCP 流量进入端口 2525。
* Google 会因为客户注册付费账号而获得报酬。
将 Mailjet 配置为 SMTP 中继
将 Mailjet 配置为邮件中继后,您可以将电子邮件转发到 Mailjet 进行远程递送。
使用 Postfix
使用 SSH 连接到您的虚拟机,将
instance-name
替换为您要从中发送电子邮件的实例的名称:gcloud compute ssh instance-name
在虚拟机上,安装 Postfix 邮件传输代理。出现提示时,请接受默认的域名选项,但选择
Local Only
配置。Debian
sudo apt update && sudo apt -y install postfix libsasl2-modules
CentOS
sudo yum install postfix cyrus-sasl-plain cyrus-sasl-md5 -y
修改 Postfix 配置选项。Postfix 配置选项在
main.cf
文件中设置。使用您所选的文本编辑器打开该文件:sudo vi /etc/postfix/main.cf
更新文件:
注释掉以下几行代码:
# default_transport = error # relay_transport = error
将以下几行代码添加到文件末尾:
relayhost = in-v3.mailjet.com:2525 smtp_tls_security_level = encrypt smtp_sasl_auth_enable = yes smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd smtp_sasl_security_options = noanonymous
这些行强制支持 SSL/TLS 并为这些请求配置 SMTP 身份验证。由一个简单的访问和安全层 (SASL) 模块负责处理 Postfix 配置中的身份验证。
保存更改并关闭该文件。
使用您所选的文本编辑器创建 SASL 密码映射:
sudo vi /etc/postfix/sasl_passwd
向
sasl_passwd
文件中添加以下配置行,为 Mailjet 提供凭据:in-v3.mailjet.com:2525 YOUR_API_KEY:YOUR_SECRET_KEY
使用
postmap
实用程序生成一个.db
文件:sudo postmap /etc/postfix/sasl_passwd sudo ls -l /etc/postfix/sasl_passwd*
您应该会收到以下响应:
-rw------- 1 root root 68 Jun 1 10:50 /etc/postfix/sasl_passwd -rw------- 1 root root 12288 Jun 1 10:51 /etc/postfix/sasl_passwd.db
接着,移除包含您凭据的文件,因为将不再需要该文件:
sudo rm /etc/postfix/sasl_passwd
设置您
.db
文件的权限:sudo chmod 600 /etc/postfix/sasl_passwd.db sudo ls -la /etc/postfix/sasl_passwd.db
最后,重新加载您的配置以加载修改后的参数:
Debian
sudo /etc/init.d/postfix restart
CentOS
sudo postfix reload
测试您的配置。安装
mailx
或mailutils
软件包并测试您的配置。Debian
sudo apt -y install mailutils
CentOS
sudo yum install mailx -y
发送一封测试邮件:
echo 'Test passed.' | mail -s 'Test-Email' -aFrom:from-email destination-email
请替换以下内容:
from-email
:已通过验证的电子邮件地址。destination-email
:用于接收电子邮件的目标地址。
在系统日志中查找包含
status
和表示成功的服务器响应代码(250)
的状态行:Debian
sudo tail -n 5 /var/log/syslog
CentOS
sudo tail -n 5 /var/log/maillog
如果您在使用 Mailjet 设置 Postfix 时遇到问题,请参阅 Mailjet Postfix 设置说明。
使用 Nodemailer
以下说明将介绍如何在 Debian Wheezy 上通过 Node.js 来使用 Mailjet。
- 使用 SSH 连接到您的实例:
gcloud compute ssh instance-name
- 更新您的软件包代码库:
user@test-wheezy:~# sudo apt update
- 安装 Node.js 依赖项:
user@test-wheezy:~# sudo apt -y install git-core curl build-essential openssl libssl-dev
-
从 GitHub 克隆 Node.js 代码库:
user@test-wheezy:~# git clone https://github.com/nodejs/node
-
将当前目录切换到 Node.js 源代码树:
user@test-wheezy:~# cd node
-
为此操作系统和虚拟机配置节点软件:
user@test-wheezy:~# ./configure
-
构建 Node.js、npm 和相关对象:
user@test-wheezy:~# sudo make
此操作可能需要几分钟时间才能完成。
-
在默认位置安装 Node.js、npm 和其他软件:
user@test-wheezy:~# sudo make install
- 安装 mailer 软件包:
user@test-wheezy:~# npm install nodemailer nodemailer-smtp-transport
-
在
node
目录中,创建一个名为sendmail.js
的新文件,其中包含以下 JavaScript 代码: -
运行该程序,通过 Mailjet 发送一封电子邮件:
user@test-wheezy:~# node sendmail.js
- 使用 SSH 连接到您的实例:
gcloud compute ssh instance-name
- 更新软件包代码库:
user@test-centos:~# sudo yum update -y
- 安装 Node.js 依赖项:
user@test-centos:~# sudo yum install git-core curl openssl openssl-dev -y ... user@test-centos:~# sudo yum groupinstall "Development Tools" -y ...
- 从 GitHub 克隆 Node.js 代码库:
user@test-centos:~# git clone https://github.com/nodejs/node
- 将当前目录切换到 Node.js 源代码树:
user@test-centos:~# cd node
- 为此操作系统和虚拟机配置节点软件:
user@test-centos:~# ./configure
-
构建 Node.js、npm 和相关对象:
user@test-centos:~# sudo make
此操作可能需要几分钟时间才能完成。
-
在默认位置安装 Node.js、npm 和其他软件:
user@test-centos:~# sudo make install
- 安装 mailer 软件包:
user@test-centos:~# npm install npm install nodemailer nodemailer-smtp-transport
-
在
node
目录中,创建一个名为sendmail.js
的新文件,其中包含以下 JavaScript 代码: -
运行该程序,通过 Mailjet 发送一封电子邮件:
user@test-centos:~# node sendmail.js
通过使用 Java 的 Mailjet API 发送邮件
如需查看使用 Mailjet API 的更多示例,请参阅官方 Mailjet 文档。
- 使用 SSH 连接到您的实例:
gcloud compute ssh instance-name
- 更新您的软件包代码库并安装所需的软件包:
user@test-instance:~# sudo apt update && sudo apt install git-core openjdk-8-jdk maven
- 从 GitHub 克隆 Java 代码库:
user@test-instance:~# git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git
- 转到本示例的主要源代码所在的目录,位于:
/root/java-docs-samples/compute/mailjet/src/main/java/com/example/compute/mailjet
-
配置您的 Mailjet 设置。请参阅 Mailjet 身份验证文档,了解如何替换以下变量:
your-mailjet-api-key
:您的 Mailjet 账号的对应 API 密钥。your-mailjet-secret-key
:您的 Mailjet 账号的对应密钥。
-
在
mailjet
目录中,使用 Maven 将类打包为一个 JAR 文件:user@test-instance:~# mvn clean package
-
确保您使用的是 OpenJDK 8:
user@test-instance:~# sudo update-alternatives --config java
-
如需发送电子邮件,请用您的收件人和发件人电子邮件地址作为参数,从打包目标目录运行此 JAR 文件:
user@test-instance:~# java -jar compute-mailjet-1.0-SNAPSHOT-jar-with-dependencies.jar recipient-email sender-email
- 使用 SSH 连接到您的实例:
gcloud compute ssh instance-name
- 更新您的软件包代码库并安装所需的软件包:
user@test-centos:~# sudo yum update && sudo yum install git-core openjdk-8-jdk maven
- 从 GitHub 克隆 Java 代码库:
user@test-centos:~# git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git
- 转到本示例的主要源代码所在的目录,位于:
/root/java-docs-samples/compute/mailjet/src/main/java/com/example/compute/mailjet
-
配置您的 Mailjet 设置。如需了解如何替换以下变量,请参阅 Mailjet 身份验证文档:
your-mailjet-api-key
:您的 Mailjet 账号的对应 API 密钥。your-mailjet-secret-key
:您的 Mailjet 账号的对应密钥。
-
在
mailjet
目录中,使用 Maven 将类打包为一个 JAR 文件:user@test-centos:~# mvn clean package
- 确保您使用的是 OpenJDK 8:
user@test-centos:~# sudo alternatives --config java
- 要发送电子邮件,请用您的收件人和发件人电子邮件地址作为参数,从打包目标目录运行此 JAR 文件:
user@test-centos:~# java -jar compute-mailjet-1.0-SNAPSHOT-jar-with-dependencies.jar recipient-email sender-email
Mailjet SMTP 设置
以下是专门适用于 Mailjet 的 SMTP 设置的快速参考信息,这些设置用于配置客户端:
- 主机:in-v3.mailjet.com
- 端口:2525
后续步骤
探索有关 Google Cloud 的参考架构、图表和最佳做法。查看我们的 Cloud 架构中心。