注册使用 IBM Bluemix ™
这个云平台提供了免费的服务、运行时和基础架构,可以帮助您快速构建和部署您的下一个移动或 Web 应用程序。
您是否曾经想过在不必维护电子邮件服务器的情况下构建您自己的电子邮件交付系统?您可以在 IBM Bluemix 中使用 SendGrid 服务实现此操作。SendGrid 是一个基于云的电子邮件基础架构和交付服务,它允许您在不必维护自己的服务器的情况下发送电子邮件。它还允许您每月发送 25,000 封免费电子邮件,利用它们进行实时分析。
“ 您可以使用本教程中提供的样例应用程序作为一个模型来快速创建您自己的基于云的电子邮件交付系统。 ”
在本教程中,我将向您展示如何结合使用 HTML5/CSS3、jQuery、Ajax、Java Servlet、SendGrid Java™ 库和 IBM Bluemix SendGrid 服务来快速构建一个电子邮件交付系统。本教程中覆盖的场景包括构建和发送电子邮件、学习追踪电子邮件的技巧,以及使用 SendGrid Template Engine 和替换标签创建一个包含动态内容的电子邮件。
您可以使用本教程中提供的样例应用程序作为一个模型来快速创建您自己的基于云的电子邮件交付系统,此外,您可以使用针对各种集成选项的 API 和客户端库,使用它们来为您应用程序中的电子邮件提供支持。
运行应用程序
获取代码
applications: - name: sendemailtest host: sendemailtest disk: 3M path: sendemail.war domain: mybluemix.net mem: 400M instances: 1
对于 Build script path ,可以输入 sendemail
值。对于 Build archive directory ,可以输入 sendemailarchive
。
取消选中 Enable unit tests ,然后单击 SAVE 。
cf push
命令中的 -n
选项覆盖主机,如下所示。单击 SAVE 。 对于 App ,请选择您刚刚在步骤 1 中部署的应用程序。
完成上述操作后,您会在 Bluemix 仪表板中收到针对您的应用程序的一条消息,表明 您的应用程序正在运行 。
您可以看到,您有一个与您的应用程序有关的 SendGrid 服务。
http://[app name].mybluemix.net
,将 [app name]
更改为您的应用程序的名称。例如,http://sendemailtest.mybluemix.net/。通过简单地输入必要字段并单击 Send ,发送一个快速测试电子邮件。在电子邮件发送出去之后,会显示一个电子邮件成功发送的提示。 sendemail 演示是一个构建于 SendGrid Java 之上的 Java Servlet 应用程序。前端是一个用 HTML5/CSS3 和 jQuery 编写的 Ajax 客户端,用于执行 POST
调用和呈现响应。servlet 会处理请求,并将响应返回给浏览器。
以下各个小节将带您了解演示应用程序的代码和功能。
gradlew
。 gradlew build
来生成一个 JAR 库文件。 import com.sendgrid.SendGrid; import com.sendgrid.SendGrid.Email; import com.sendgrid.SendGridException;
您需要使用您的应用程序的 API 密钥来连接到 SendGrid 服务,因为每个 API 调用都需要进行身份验证。在将服务添加/绑定到现有的应用程序之后,该服务的连接和凭证信息在 Bluemix VCAP_SERVICES
环境中是可用的。
org.json
在 Java 代码中检索 username
和 password
。 点击查看代码清单
关闭 [x]
final String VCAP_SERVICES = System.getenv("VCAP_SERVICES"); if (VCAP_SERVICES != null) { JSONObject vcap = new JSONObject(VCAP_SERVICES); JSONArray sendgrid = (JSONArray) vcap.get("sendgrid"); JSONObject json = sendgrid.getJSONObject(0); JSONObject credentials = json.getJSONObject("credentials"); String username = credentials.getString("username"); String password = credentials.getString("password"); }
发送电子邮件是 Java 程序的一项最基本的电子邮件功能。SendGrid 提供了两种发送电子邮件的方式:SMTP 中继或 Web API。 SendGrid Java 库 是一个助手库,用于包装 SMTP API 活动。它提供了 SendGrid 与您的应用程序之间的快速集成。关于与 SendGrid 集成的更多信息,请参阅 Integrate With SendGrid 。
SendGrid Java 库提供了程序发送电子邮件所需的一切。要发送消息,一个程序应该执行以下步骤:
Email
对象。 Email email = new Email();
email.addTo("david@sendgridtest.com"); email.addToName("David"); email.setFrom("sendgriddemo@sendgridtest.com"); email.setFromName("SendGrid Demo"); email.setSubject("Hello World"); email.setText("Hello, /n This is a test email sent from IBM Bluemix SendGrid service");
SendGrid
对象。对于 Bluemix SendGrid 服务,此信息被存储在 VCAP_SERVICES 环境变量中。参见SendGrid API 密钥。 SendGrid sendgrid = new SendGrid(<user_name>, <password>);
sendgrid.send(email);
SendGrid 提供了各种应用程序(过滤器)来提供额外的电子邮件功能。这些功能包括发送 bcc 电子邮件、在文本和 HTML 正文的底部添加脚注、订阅追踪、Google Analytics 追踪、单击追踪、电子邮件模板和其他功能。要获得过滤器列表,请参见 Apps (Filters) 。
请注意,API 文档中的过滤器定义也适用于 SMTP API。要在 Java 中添加一个过滤器,可以使用以下语法来调用 com.sendgrid.SendGrid.Email
类中的 addFilter()
方法:
email.addFilter(<filter_name>, <parameter_name>, <parameter_value>);
例如,要插入一个电子邮件脚注,可以运行以下代码:
email.addFilter("footer", "enable", "1"); email.addFilter("footer", "text/html", "<p>Thanks,<br/> The IBM Bluemix Team<p>"); email.addFilter("footer", "text/plain", "Thanks,/n IBM Bluemix Team");
电子邮件追踪是通过 opentrack
和 clicktrack
过滤器执行的。它们在您打开电子邮件和单击电子邮件中的超级链接时开始追踪。有关的更多信息,请参阅针对 opentrack
和 clicktrack
的文档。以下示例演示了单击追踪过滤器。
点击查看代码清单
关闭 [x]
email.setHtml("Hello, <p>Please visit <a href='https://ace.ng.bluemix.net'>IBM Bluemix</a>.</p>"); email.addFilter("clicktrack", "enable", "1");
只需数分钟就可以在 SendGrid 的 Email Activity 工具中获得电子邮件追踪结果。它通过您的帐户显示了一个最近事件(已交付电子邮件、已启动电子邮件、打开和单击电子邮件事件)列表。要访问该列表,请执行以下操作:
以下示例显示了对打开和单击电子邮件的追踪。
点击查看大图
关闭 [x]
com.sendgrid.SendGrid.Email
上调用 addCategory()
方法即可。例如:
email.addCategory("marketing");
然后,您可以在 SendGrid 仪表板的 Categories 选项卡下查看结果。
以下示例显示了 marketing 类别中的电子邮件打开和单击事件的统计数据。
点击查看大图
关闭 [x]
将惟一的参数附加到您的电子邮件中。您需要添加的所有代码行如下所示:
email.addUniqueArg(<key>, <val>);
您可以查看您帐户的 Email Activity 选项卡中的惟一参数。
SendGrid 的 Template Engine 允许您使用 HTML 和 CSS 快速创建一个自定义时事通讯,然后将它整合到您的应用程序中。您可以使用嵌入在模板中的替换标签来添加动态内容。关于替换标签的更多信息,请参阅 Body and Subject Tags 。
要创建一个电子邮件通讯:
点击查看大图
关闭 [x]
// Create HTML content email.setHtml("Hello -name-,<br>"); // Specify substitution value for the '-name-' tag defined in the HTML body String[] val = { "SendGridUser" }; email.addSubstitution("-name-", val); // Enable template email.addFilter("templates", "enable", "1"); email.addFilter("templates", "template_id", "ffce1668-6d89-4687-807d-013ae59d5b79 ");
电子邮件交付是大多数企业的一个成功要素。借助 IBM Bluemix SendGrid 服务,企业不必再构建和维护传统的高成本电子邮件服务器。您可以使用本教程中的代码快速构建您自己的电子邮件交付系统,并以此作为一个起点。
BLUEMIX SERVICE USED IN THIS TUTORIAL: SendGrid 降低企业维护电子邮件系统的成本和复杂性。