Advertisement
DevStarlight

lambda sendMail

Nov 7th, 2016
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. var aws = require("aws-sdk");
  2.  
  3. var ses = new aws.SES({
  4.   accessKeyId: "xxxxxxxx",
  5.   secretAccesskey: "xxxxxxxx/xxxxxxx"
  6. });
  7.  
  8. var s3 = new aws.S3({
  9.   apiVersion: "2006-03-01",
  10.   region: "us-west-2"
  11. });
  12.  
  13. var getPieceOfMail = function (path, mapObj, replace) {
  14.   return new Promise(function (resolve, reject) {
  15.     s3.getObject({
  16.       Bucket: "myBucket",
  17.       Key: "mailing/" + path
  18.     }, function (err, data) {
  19.       if (err) {
  20.         reject(err);
  21.       } else {
  22.         if (replace === true) {
  23.             var re = new RegExp(Object.keys(mapObj).join("|"), "gi");
  24.             data = data.Body.toString().replace(re, function (matched) {
  25.               return mapObj[matched.toLowerCase()];
  26.             });
  27.             resolve(data);
  28.         } else {
  29.             resolve(data.Body.toString());
  30.         }
  31.       }
  32.     });
  33.   });
  34. };
  35.  
  36. var getRegisterSource = function (nickname, user_id) {
  37.   var activate_link, pieces;
  38.  
  39.   activate_link = "https://mydomain/" + user_id;
  40.  
  41.   pieces = [
  42.     getPieceOfMail("starts/start.html", {}, false),
  43.     getPieceOfMail("headers/a.html", {}, false),
  44.     getPieceOfMail("sections/a.html", { "user": nickname, "activate": activate_link }, true),
  45.     getPieceOfMail("footers/a.html", {}, false),
  46.     getPieceOfMail("footers/b.html", {}, false),
  47.     getPieceOfMail("footers/c.html", {}, false),
  48.     getPieceOfMail("end.html", {})
  49.   ];
  50.  
  51.   return Promise.all(pieces)
  52.     .then(function (data) {
  53.       return (data[0] + data[1] + data[2] + data[3] + data[4] + data[5] + data[6]);
  54.     })
  55.     .catch(function (err) {
  56.       return err;
  57.     });
  58. };
  59.  
  60. var sendEmail = function (email, data) {
  61.     return new Promise(function (resolve, reject) {
  62.         var params = {
  63.             Destination: { ToAddresses: [email] },
  64.             Message: {
  65.               Body: {
  66.                 Html: {
  67.                   Data: data
  68.                 },
  69.                 Text: {
  70.                   Data: data
  71.                 }
  72.               },
  73.               Subject: {
  74.                 Data: "Account validation"
  75.               }
  76.             },
  77.             Source: "xxx <noreply@mydomain.co>",
  78.         };
  79.    
  80.         ses.sendEmail(params, function (err, data) {
  81.             if (err) {
  82.                 reject(err);
  83.             } else {
  84.                 resolve(data);
  85.             }
  86.         });
  87.     });
  88. };
  89.  
  90. exports.handler = function (event, context) {
  91.     getRegisterSource(event['nickname'], event['user_id'])
  92.       .then(function (data) {
  93.         return sendEmail(event["email"], data);
  94.       })
  95.       .then(function (data) {
  96.         context.done(null, data);
  97.       })
  98.       .catch(function (err) {
  99.         console.log("==ERROR==");
  100.         context.done(err, err);
  101.       });
  102. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement