Skip to content

Commit

Permalink
Added sendgrid example app. Also used for Compute Engine snippet.
Browse files Browse the repository at this point in the history
  • Loading branch information
jmdobry committed Dec 7, 2015
1 parent ba9b489 commit b329707
Show file tree
Hide file tree
Showing 8 changed files with 195 additions and 1 deletion.
5 changes: 4 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,7 @@ npm-debug.log
coverage/

test/encrypted/nodejs-docs-samples.json
dump.rdb
dump.rdb
logs/
*.iml
.idea/
5 changes: 5 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ and applications on [Google App Engine](http://cloud.google.com/nodejs).
- Bower - [Source code][bower_1] | [App Engine Tutorial][bower_2] | [Documentation][bower_3]
- Grunt - [Source code][grunt_1] | [App Engine Tutorial][grunt_2] | [Live demo][grunt_3] | [Documentation][grunt_4]
- Mailgun - [Source code][mailgun_1] | [App Engine Tutorial][mailgun_2] | [Documentation][mailgun_3]
- Sendgrid - [Source code][sendgrid_1] | [App Engine Tutorial][sendgrid_2] | [Documentation][sendgrid_3]
- Webpack - [Source code][webpack_1] | [App Engine Tutorial][webpack_2] | [Documentation][webpack_3]

## Google Storage
Expand Down Expand Up @@ -134,6 +135,10 @@ See [LICENSE](https://github.com/GoogleCloudPlatform/nodejs-docs-samples/blob/ma
[mailgun_2]: https://cloud.google.com/nodejs/resources/tools/mailgun
[mailgun_3]: http://www.mailgun.com/

[sendgrid_1]: https://github.com/GoogleCloudPlatform/nodejs-docs-samples/blob/master/appengine/sendgrid
[sendgrid_2]: https://cloud.google.com/nodejs/resources/tools/sendgrid
[sendgrid_3]: http://sendgrid.com/

[webpack_1]: https://github.com/GoogleCloudPlatform/nodejs-docs-samples/blob/master/appengine/webpack
[webpack_2]: https://cloud.google.com/nodejs/resources/tools/webpack
[webpack_3]: https://webpack.github.io/
Expand Down
20 changes: 20 additions & 0 deletions appengine/sendgrid/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
## Express.js + Sendgrid on Google App Engine

> [Sendgrid][1]: Delivering your transactional and marketing email through one reliable platform.
>
> – sendgrid.com
This sample application demonstrates how to use [Express.js][2] and
[sendgrid-nodejs][3] to send transactional email on [Google App Engine][4].

Read the [Sendgrid on App Engine Tutorial][5] for how to run and deploy this
sample app.

You can also read the [Sendgrid documentation][6].

[1]: https://sendgrid.com/
[2]: http://expressjs.com
[3]: https://github.com/sendgrid/sendgrid-nodejs
[4]: https://cloud.google.com/appengine
[5]: https://cloud.google.com/nodejs/resources/tools/sendgrid
[6]: https://sendgrid.com/docs
92 changes: 92 additions & 0 deletions appengine/sendgrid/app.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
// Copyright 2015, Google, Inc.
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

'use strict';

var express = require('express');
var path = require('path');
var bodyParser = require('body-parser');

// [START setup]
var Sendgrid = require('sendgrid')(process.env.SENDGRID_API_KEY);
// [END setup]

var app = express();

// Setup view engine
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');

// Parse form data
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));

// [START index]
app.get('/', function(req, res) {
res.render('index');
});
// [END index]

// [START hello]
app.post('/hello', function(req, res, next) {
Sendgrid.send({
from: '[email protected]', // From address
to: req.body.email, // To address
subject: 'Hello World!', // Subject
text: 'Sendgrid on Google App Engine with Node.js' // Content
}, function (err, json) {
if (err) {
return next(err);
} else {
// Render the index route on success
return res.render('index', {
sent: true
});
}
});
});
// [END hello]

if (module === require.main) {
// [START server]
var server = app.listen(
process.env.PORT || 8080,
'0.0.0.0',
function () {
var address = server.address().address;
var port = server.address().port;
console.log('App listening at http://%s:%s', address, port);
console.log('Press Ctrl+C to quit.');
}
);
// [END server]
} else {
modules.exports = function send() {
// [START send]
Sendgrid.send({
from: 'ANOTHER_EMAIL@ANOTHER_EXAMPLE.COM', // From address
to: '[email protected]', // To address
subject: 'test email from Node.js on a Compute Engine VM', // Subject
text: 'Hello!\n\nThis a test email from Node.js on a VM.' // Content
}, function (err, json) {
if (err) {
console.error(err);
} else {
console.log(json);
}
});
// [END send]
};
}


21 changes: 21 additions & 0 deletions appengine/sendgrid/app.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# Copyright 2015, Google, Inc.
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# [START app_yaml]
runtime: nodejs
vm: true
env_variables:
SENDGRID_API_KEY: <your-sendgrid-api-key>
# [END app_yaml]
skip_files:
- ^(.*/)?.*/node_modules/.*$
20 changes: 20 additions & 0 deletions appengine/sendgrid/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
{
"name": "appengine-sendgrid",
"description": "An example of using Sendgrid in Node.js on Google App Engine.",
"version": "0.0.1",
"private": true,
"license": "Apache Version 2.0",
"engines": {
"node": "~4.2"
},
"scripts": {
"start": "node app.js",
"deploy": "gcloud preview app deploy app.yaml"
},
"dependencies": {
"body-parser": "^1.14.1",
"express": "^4.13.3",
"jade": "^1.11.0",
"sendgrid": "^2.0.0"
}
}
27 changes: 27 additions & 0 deletions appengine/sendgrid/views/index.jade
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
// Copyright 2015, Google, Inc.
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
doctype html
html
head
title= title
body
h1 Hello World!
p Express.js + Sendgrid on Google App Engine.
hr
if sent
p Email sent!
else
form(name="hello", action="/hello", method="post")
input(type="email", placeholder="Enter your email to send yourself a Hello World message", name="email", style="width: 50%; margin-right: 15px;")
input(type="submit", value="Send")
6 changes: 6 additions & 0 deletions test/appengine/all.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,12 @@ var sampleTests = [
args: ['server.js'],
msg: 'Hello World! Restify.js on Google App Engine.'
},
{
dir: 'sendgrid',
cmd: 'node',
args: ['app.js'],
msg: 'Express.js + Sendgrid on Google App Engine.'
},
{
dir: 'webpack',
cmd: 'node',
Expand Down

0 comments on commit b329707

Please sign in to comment.