├── .babelrc ├── .gitignore ├── LICENSE ├── README.md ├── example.config.json ├── gulpfile.babel.js ├── package.json └── src ├── assets ├── img │ ├── .gitkeep │ └── archive │ │ └── .gitkeep └── scss │ ├── _settings.scss │ ├── app.scss │ └── template │ └── _template.scss ├── helpers └── raw.js ├── layouts ├── default.html └── index-layout.html ├── pages ├── archive │ └── .gitkeep ├── basic.html ├── drip.html ├── hero.html ├── index.html ├── marketing.html ├── newsletter-2.html ├── newsletter.html ├── order.html ├── password.html ├── sidebar-hero.html ├── sidebar.html └── welcome.html └── partials └── .gitkeep /.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["es2015"] 3 | } 4 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | npm-debug.log 4 | bower_components 5 | dist 6 | .sass-cache 7 | .awspublish* 8 | config.json 9 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2013-2017 ZURB, inc. 2 | 3 | MIT License 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining 6 | a copy of this software and associated documentation files (the 7 | "Software"), to deal in the Software without restriction, including 8 | without limitation the rights to use, copy, modify, merge, publish, 9 | distribute, sublicense, and/or sell copies of the Software, and to 10 | permit persons to whom the Software is furnished to do so, subject to 11 | the following conditions: 12 | 13 | The above copyright notice and this permission notice shall be 14 | included in all copies or substantial portions of the Software. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 17 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 18 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 19 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 20 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 21 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 22 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 23 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Foundation for Emails Template 2 | 3 | [![devDependency Status](https://david-dm.org/zurb/foundation-emails-template/dev-status.svg)](https://david-dm.org/zurb/foundation-emails-template#info=devDependencies) 4 | 5 | **Please open all issues with this template on the main [Foundation for Emails](http://github.com/zurb/foundation-emails/issues) repo.** 6 | 7 | This is the official starter project for [Foundation for Emails](http://foundation.zurb.com/emails), a framework for creating responsive HTML devices that work in any email client. It has a Gulp-powered build system with these features: 8 | 9 | - Handlebars HTML templates with [Panini](http://github.com/zurb/panini) 10 | - Simplified HTML email syntax with [Inky](http://github.com/zurb/inky) 11 | - Sass compilation 12 | - Image compression 13 | - Built-in BrowserSync server 14 | - Full email inlining process 15 | 16 | ## Installation 17 | 18 | To use this template, your computer needs [Node.js](https://nodejs.org/en/) 0.12 or greater. The template can be installed with the Foundation CLI, or downloaded and set up manually. 19 | 20 | ### Using the CLI 21 | 22 | Install the Foundation CLI with this command: 23 | 24 | ```bash 25 | npm install foundation-cli --global 26 | ``` 27 | 28 | Use this command to set up a blank Foundation for Emails project: 29 | 30 | ```bash 31 | foundation new --framework emails 32 | ``` 33 | 34 | The CLI will prompt you to give your project a name. The template will be downloaded into a folder with this name. 35 | 36 | ### Manual Setup 37 | 38 | To manually set up the template, first download it with Git: 39 | 40 | ```bash 41 | git clone https://github.com/zurb/foundation-emails-template projectname 42 | ``` 43 | 44 | Then open the folder in your command line, and install the needed dependencies: 45 | 46 | ```bash 47 | cd projectname 48 | npm install 49 | ``` 50 | 51 | ## Build Commands 52 | 53 | Run `npm start` to kick off the build process. A new browser tab will open with a server pointing to your project files. 54 | 55 | Run `npm run build` to inline your CSS into your HTML along with the rest of the build process. 56 | 57 | Run `npm run litmus` to build as above, then submit to litmus for testing. *AWS S3 Account details required (config.json)* 58 | 59 | Run `npm run mail` to build as above, then send to specified email address for testing. *SMTP server details required (config.json)* 60 | 61 | Run `npm run zip` to build as above, then zip HTML and images for easy deployment to email marketing services. 62 | 63 | ### Speeding Up Your Build 64 | 65 | If you create a lot of emails, your build can start to slow down, as each build rebuilds all of the emails in the 66 | repository. A simple way to keep it fast is to archive emails you no longer need by moving the pages into `src/pages/archive`. 67 | You can also move images that are no longer needed into `src/assets/img/archive`. The build will ignore pages and images that 68 | are inside the archive folder. 69 | 70 | ## Litmus Tests (config.json) 71 | 72 | Testing in Litmus requires the images to be hosted publicly. The provided gulp task handles this by automating hosting to an AWS S3 account. Provide your Litmus and AWS S3 account details in the `example.config.json` and then rename to `config.json`. Litmus config, and `aws.url` are required, however if you follow the [aws-sdk suggestions](http://docs.aws.amazon.com/AWSJavaScriptSDK/guide/node-configuring.html) you don't need to supply the AWS credentials into this JSON. 73 | 74 | ```json 75 | { 76 | "aws": { 77 | "region": "us-east-1", 78 | "accessKeyId": "YOUR_ACCOUNT_KEY", 79 | "secretAccessKey": "YOUR_ACCOUNT_SECRET", 80 | "params": { 81 | "Bucket": "elasticbeanstalk-us-east-1-THIS_IS_JUST_AN_EXAMPLE" 82 | }, 83 | "url": "https://s3.amazonaws.com/elasticbeanstalk-us-east-1-THIS_IS_JUST_AN_EXAMPLE" 84 | }, 85 | "litmus": { 86 | "username": "YOUR_LITMUS@EMAIL.com", 87 | "password": "YOUR_ACCOUNT_PASSWORD", 88 | "url": "https://YOUR_ACCOUNT.litmus.com", 89 | "applications": ["ol2003","ol2007","ol2010","ol2011","ol2013","chromegmailnew","chromeyahoo","appmail9","iphone5s","ipad","android4","androidgmailapp"] 90 | } 91 | } 92 | ``` 93 | 94 | ## Manual email tests (config.json) 95 | 96 | Similar to the Litmus tests, you can have the emails sent to a specified email address. Just like with the Litmus tests, you will need to provide AWS S3 account details in `config.json`. You will also need to specify to details of an SMTP server. The email address to send to emails to can either by configured in the `package.json` file or added as a parameter like so: `npm run mail -- --to="example.com"` 97 | 98 | ```json 99 | { 100 | "aws": { 101 | "region": "us-east-1", 102 | "accessKeyId": "YOUR_ACCOUNT_KEY", 103 | "secretAccessKey": "YOUR_ACCOUNT_SECRET", 104 | "params": { 105 | "Bucket": "elasticbeanstalk-us-east-1-THIS_IS_JUST_AN_EXAMPLE" 106 | }, 107 | "url": "https://s3.amazonaws.com/elasticbeanstalk-us-east-1-THIS_IS_JUST_AN_EXAMPLE" 108 | }, 109 | "mail": { 110 | "to": [ 111 | "example@domain.com" 112 | ], 113 | "from": "Company name tag of the email, and compresses the HTML 119 | function inliner(css) { 120 | var css = fs.readFileSync(css).toString(); 121 | var mqCss = siphon(css); 122 | 123 | var pipe = lazypipe() 124 | .pipe($.inlineCss, { 125 | applyStyleTags: false, 126 | removeStyleTags: true, 127 | preserveMediaQueries: true, 128 | removeLinkTags: false 129 | }) 130 | .pipe($.replace, '', ``) 131 | .pipe($.replace, '', '') 132 | .pipe($.htmlmin, { 133 | collapseWhitespace: true, 134 | minifyCSS: true 135 | }); 136 | 137 | return pipe(); 138 | } 139 | 140 | // Ensure creds for Litmus are at least there. 141 | function creds(done) { 142 | var configPath = './config.json'; 143 | try { CONFIG = JSON.parse(fs.readFileSync(configPath)); } 144 | catch(e) { 145 | beep(); 146 | console.log('[AWS]'.bold.red + ' Sorry, there was an issue locating your config.json. Please see README.md'); 147 | process.exit(); 148 | } 149 | done(); 150 | } 151 | 152 | // Post images to AWS S3 so they are accessible to Litmus and manual test 153 | function aws() { 154 | var publisher = !!CONFIG.aws ? $.awspublish.create(CONFIG.aws) : $.awspublish.create(); 155 | var headers = { 156 | 'Cache-Control': 'max-age=315360000, no-transform, public' 157 | }; 158 | 159 | return gulp.src('./dist/assets/img/*') 160 | // publisher will add Content-Length, Content-Type and headers specified above 161 | // If not specified it will set x-amz-acl to public-read by default 162 | .pipe(publisher.publish(headers)) 163 | 164 | // create a cache file to speed up consecutive uploads 165 | //.pipe(publisher.cache()) 166 | 167 | // print upload updates to console 168 | .pipe($.awspublish.reporter()); 169 | } 170 | 171 | // Send email to Litmus for testing. If no AWS creds then do not replace img urls. 172 | function litmus() { 173 | var awsURL = !!CONFIG && !!CONFIG.aws && !!CONFIG.aws.url ? CONFIG.aws.url : false; 174 | 175 | return gulp.src('dist/**/*.html') 176 | .pipe($.if(!!awsURL, $.replace(/=('|")(\/?assets\/img)/g, "=$1"+ awsURL))) 177 | .pipe($.litmus(CONFIG.litmus)) 178 | .pipe(gulp.dest('dist')); 179 | } 180 | 181 | // Send email to specified email for testing. If no AWS creds then do not replace img urls. 182 | function mail() { 183 | var awsURL = !!CONFIG && !!CONFIG.aws && !!CONFIG.aws.url ? CONFIG.aws.url : false; 184 | 185 | if (EMAIL) { 186 | CONFIG.mail.to = [EMAIL]; 187 | } 188 | 189 | return gulp.src('dist/**/*.html') 190 | .pipe($.if(!!awsURL, $.replace(/=('|")(\/?assets\/img)/g, "=$1"+ awsURL))) 191 | .pipe($.mail(CONFIG.mail)) 192 | .pipe(gulp.dest('dist')); 193 | } 194 | 195 | // Copy and compress into Zip 196 | function zip() { 197 | var dist = 'dist'; 198 | var ext = '.html'; 199 | 200 | function getHtmlFiles(dir) { 201 | return fs.readdirSync(dir) 202 | .filter(function(file) { 203 | var fileExt = path.join(dir, file); 204 | var isHtml = path.extname(fileExt) == ext; 205 | return fs.statSync(fileExt).isFile() && isHtml; 206 | }); 207 | } 208 | 209 | var htmlFiles = getHtmlFiles(dist); 210 | 211 | var moveTasks = htmlFiles.map(function(file){ 212 | var sourcePath = path.join(dist, file); 213 | var fileName = path.basename(sourcePath, ext); 214 | 215 | var moveHTML = gulp.src(sourcePath) 216 | .pipe($.rename(function (path) { 217 | path.dirname = fileName; 218 | return path; 219 | })); 220 | 221 | var moveImages = gulp.src(sourcePath) 222 | .pipe($.htmlSrc({ selector: 'img'})) 223 | .pipe($.rename(function (currentpath) { 224 | currentpath.dirname = path.join(fileName, currentpath.dirname.replace('dist', '')); 225 | return currentpath; 226 | })); 227 | 228 | return merge(moveHTML, moveImages) 229 | .pipe($.zip(fileName+ '.zip')) 230 | .pipe(gulp.dest('dist')); 231 | }); 232 | 233 | return merge(moveTasks); 234 | } 235 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "foundation-emails-template", 3 | "version": "2.4.0", 4 | "description": "Basic template for a Foundation for Emails project.", 5 | "repository": "foundation/foundation-emails-template", 6 | "main": "gulpfile.babel.js", 7 | "scripts": { 8 | "start": "gulp", 9 | "build": "gulp --production", 10 | "zip": "gulp zip --production", 11 | "litmus": "gulp litmus --production", 12 | "mail": "gulp mail --production" 13 | }, 14 | "author": "Foundation (https://get.foundation)", 15 | "license": "MIT", 16 | "dependencies": { 17 | "foundation-emails": "^2.4.0" 18 | }, 19 | "devDependencies": { 20 | "babel-core": "^6.3.26", 21 | "babel-preset-es2015": "^6.3.13", 22 | "babel-register": "^6.7.2", 23 | "beepbeep": "^1.2.0", 24 | "browser-sync": "^2.11.0", 25 | "colors": "^1.1.2", 26 | "gulp": "^4.0.2", 27 | "gulp-autoprefixer": "^7.0.1", 28 | "gulp-cached": "^1.1.0", 29 | "gulp-concat": "^2.6.0", 30 | "gulp-htmlmin": "^5.0.1", 31 | "gulp-if": "^3.0.0", 32 | "gulp-inject-string": "^1.1.0", 33 | "gulp-inline-css": "^3.4.0", 34 | "gulp-load-plugins": "^2.0.1", 35 | "gulp-postcss": "^8.0.0", 36 | "gulp-prettify": "^0.5.0", 37 | "gulp-prompt": "^1.2.0", 38 | "gulp-rename": "^1.2.2", 39 | "gulp-rsync": "0.0.8", 40 | "gulp-sass": "^4.1.0", 41 | "gulp-sass-lint": "^1.4.0", 42 | "gulp-sourcemaps": "^2.6.5", 43 | "gulp-uncss": "^1.0.1", 44 | "gulp-wrap": "^0.15.0", 45 | "gulp-zip": "^5.0.1", 46 | "gulp-awspublish": "^3.0.1", 47 | "gulp-cli": "^1.1.0", 48 | "gulp-html-src": "^1.0.0", 49 | "gulp-imagemin": "^2.4.0", 50 | "gulp-litmus": "0.0.7", 51 | "gulp-mail": "^0.1.1", 52 | "gulp-replace": "^0.5.4", 53 | "inky": "^1.4.1", 54 | "lazypipe": "^1.0.1", 55 | "merge-stream": "^1.0.0", 56 | "panini": "^1.3.0", 57 | "rimraf": "^2.3.3", 58 | "sass": "^1.35.2", 59 | "siphon-media-query": "^1.0.0", 60 | "yargs": "^4.1.0" 61 | }, 62 | "babel": { 63 | "presets": [ 64 | "es2015" 65 | ] 66 | } 67 | } 68 | -------------------------------------------------------------------------------- /src/assets/img/.gitkeep: -------------------------------------------------------------------------------- 1 | # You can delete this file. It's just here to make Git happy. 2 | -------------------------------------------------------------------------------- /src/assets/img/archive/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/foundation/foundation-emails-template/3b40a8e387fc97785910edffd9cc4feb6d68ac0b/src/assets/img/archive/.gitkeep -------------------------------------------------------------------------------- /src/assets/scss/_settings.scss: -------------------------------------------------------------------------------- 1 | // Foundation for Emails Settings 2 | // ------------------------------ 3 | // 4 | // Table of Contents: 5 | // 6 | // 1. Global 7 | // 2. Grid 8 | // 3. Block Grid 9 | // 4. Typography 10 | // 5. Button 11 | // 6. Callout 12 | // 7. Menu 13 | // 8. Thumbnail 14 | 15 | 16 | // 1. Global 17 | // --------- 18 | 19 | $primary-color: #2199e8; 20 | $secondary-color: #777777; 21 | $success-color: #3adb76; 22 | $warning-color: #ffae00; 23 | $alert-color: #ec5840; 24 | $light-gray: #f3f3f3; 25 | $medium-gray: #cacaca; 26 | $dark-gray: #8a8a8a; 27 | $black: #0a0a0a; 28 | $white: #fefefe; 29 | $pre-color: #ff6908; 30 | $global-width: 580px; 31 | $global-width-small: 95%; 32 | $global-gutter: 16px; 33 | $body-background: $light-gray; 34 | $container-background: $white; 35 | $global-padding: 16px; 36 | $global-margin: 16px; 37 | $global-radius: 3px; 38 | $global-rounded: 500px; 39 | $global-breakpoint: $global-width + $global-gutter; 40 | 41 | // 2. Grid 42 | // ------- 43 | 44 | $grid-column-count: 12; 45 | $column-padding-bottom: $global-padding; 46 | $container-radius: 0; 47 | 48 | // 3. Block Grid 49 | // ------------- 50 | 51 | $block-grid-max: 8; 52 | $block-grid-gutter: $global-gutter; 53 | 54 | // 4. Typography 55 | // ------------- 56 | 57 | $global-font-color: $black; 58 | $body-font-family: Helvetica, Arial, sans-serif; 59 | $global-font-weight: normal; 60 | $header-color: inherit; 61 | $global-line-height: 1.3; 62 | $global-font-size: 16px; 63 | $body-line-height: $global-line-height; 64 | $header-font-family: $body-font-family; 65 | $header-font-weight: $global-font-weight; 66 | $h1-font-size: 34px; 67 | $h2-font-size: 30px; 68 | $h3-font-size: 28px; 69 | $h4-font-size: 24px; 70 | $h5-font-size: 20px; 71 | $h6-font-size: 18px; 72 | $header-margin-bottom: 10px; 73 | $paragraph-margin-bottom: 10px; 74 | $small-font-size: 80%; 75 | $small-font-color: $medium-gray; 76 | $lead-font-size: $global-font-size * 1.25; 77 | $lead-line-height: 1.6; 78 | $text-padding: 10px; 79 | $subheader-lineheight: 1.4; 80 | $subheader-color: $dark-gray; 81 | $subheader-font-weight: $global-font-weight; 82 | $subheader-margin-top: 4px; 83 | $subheader-margin-bottom: 8px; 84 | $hr-width: $global-width; 85 | $hr-border: 1px solid $black; 86 | $hr-margin: 20px; 87 | $anchor-text-decoration: none; 88 | $anchor-color: $primary-color; 89 | $anchor-color-visited: $anchor-color; 90 | $anchor-color-hover: darken($primary-color, 10%); 91 | $anchor-color-active: $anchor-color-hover; 92 | $stat-font-size: 40px; 93 | 94 | // 5. Button 95 | // --------- 96 | 97 | $button-padding: ( 98 | tiny: 4px 8px 4px 8px, 99 | small: 5px 10px 5px 10px, 100 | default: 8px 16px 8px 16px, 101 | large: 10px 20px 10px 20px, 102 | ); 103 | $button-font-size: ( 104 | tiny: 10px, 105 | small: 12px, 106 | default: 16px, 107 | large: 20px, 108 | ); 109 | $button-color: $white; 110 | $button-color-alt: $medium-gray; 111 | $button-font-weight: bold; 112 | $button-margin: 0 0 $global-margin 0; 113 | $button-background: $primary-color; 114 | $button-border: 2px solid $button-background; 115 | $button-radius: $global-radius; 116 | $button-rounded: $global-rounded; 117 | 118 | // 6. Callout 119 | // ---------- 120 | 121 | $callout-background: $white; 122 | $callout-background-fade: 85%; 123 | $callout-padding: 10px; 124 | $callout-margin-bottom: $global-margin; 125 | $callout-border: 1px solid darken($callout-background, 20%); 126 | $callout-border-secondary: 1px solid darken($secondary-color, 20%); 127 | $callout-border-success: 1px solid darken($success-color, 20%); 128 | $callout-border-warning: 1px solid darken($warning-color, 20%); 129 | $callout-border-alert: 1px solid darken($alert-color, 20%); 130 | 131 | // 7. Menu 132 | // ------- 133 | 134 | $menu-item-padding: 10px; 135 | $menu-item-gutter: 10px; 136 | $menu-item-color: $primary-color; 137 | 138 | // 8. Thumbnail 139 | // ------------ 140 | 141 | $thumbnail-border: solid 4px $white; 142 | $thumbnail-margin-bottom: $global-margin; 143 | $thumbnail-shadow: 0 0 0 1px rgba($black, 0.2); 144 | $thumbnail-shadow-hover: 0 0 6px 1px rgba($primary-color, 0.5); 145 | $thumbnail-transition: box-shadow 200ms ease-out; 146 | $thumbnail-radius: $global-radius; 147 | -------------------------------------------------------------------------------- /src/assets/scss/app.scss: -------------------------------------------------------------------------------- 1 | @import 'settings'; 2 | @import 'foundation-emails'; 3 | 4 | @import 'template/template'; -------------------------------------------------------------------------------- /src/assets/scss/template/_template.scss: -------------------------------------------------------------------------------- 1 | // These are the styles to make some of the templates look extra nice. 2 | // Feel free to remove these styles for production! 3 | 4 | // Body Styles 5 | body, 6 | html, 7 | .body { 8 | background: #f3f3f3 !important; 9 | } 10 | 11 | .container.header { 12 | background: #f3f3f3; 13 | } 14 | 15 | .body-drip { 16 | border-top: 8px solid #663399; 17 | } 18 | 19 | // Full Width Headers 20 | .header { 21 | background: #8a8a8a; 22 | } 23 | 24 | .header .columns { 25 | padding-bottom: 0; 26 | } 27 | 28 | .header p { 29 | color: #fff; 30 | padding-top: 15px; 31 | } 32 | 33 | .header .wrapper-inner { 34 | padding: 20px; 35 | } 36 | 37 | .header .container { 38 | background: transparent; 39 | } 40 | 41 | // Social Media 42 | table.button.facebook table td { 43 | background: #3B5998 !important; 44 | border-color: #3B5998; 45 | } 46 | 47 | table.button.twitter table td { 48 | background: #1daced !important; 49 | border-color: #1daced; 50 | } 51 | 52 | table.button.google table td { 53 | background: #DB4A39 !important; 54 | border-color: #DB4A39; 55 | } 56 | 57 | .wrapper.secondary { 58 | background: #f3f3f3; 59 | } -------------------------------------------------------------------------------- /src/helpers/raw.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Any code used inside this helper is ignored by Handlebars. Use it if your email service provider uses a Handlebars-like syntax. 3 | * @example 4 | * {{{{raw}}}} 5 | * {{ this }} code won't be parsed. 6 | * {{{{/raw}}}} 7 | */ 8 | module.exports = function(content) { 9 | return content.fn(); 10 | } 11 | -------------------------------------------------------------------------------- /src/layouts/default.html: -------------------------------------------------------------------------------- 1 | {{!-- This is the base layout for your project, and will be used on every page. --}} 2 | 3 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | {{subject}} 12 | 13 | 14 | 15 | {{description}} 16 | 17 | 18 | 24 | 25 |
19 |
20 | {{!-- Pages you create in the src/pages/ folder are inserted here when the flattened emails are created. --}} 21 | {{> body}} 22 |
23 |
26 | 27 |
                                                           
28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /src/layouts/index-layout.html: -------------------------------------------------------------------------------- 1 | {{!-- This is the base layout for your project, and will be used on every page. --}} 2 | 3 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | {{subject}} 12 | 13 | 14 | 15 | {{description}} 16 | 17 | 18 | 25 | 26 |
19 |
20 | 21 | {{> body}} 22 | 23 |
24 |
27 | 28 |
                                                           
29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /src/pages/archive/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/foundation/foundation-emails-template/3b40a8e387fc97785910edffd9cc4feb6d68ac0b/src/pages/archive/.gitkeep -------------------------------------------------------------------------------- /src/pages/basic.html: -------------------------------------------------------------------------------- 1 | --- 2 | subject: My Basic Email Template Subject 3 | --- 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |

BASIC

13 |
14 |
15 |
16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 |

Hi, Susan Calvin

26 |

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Magni, iste, amet consequatur a veniam.

27 |

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ut optio nulla et, fugiat. Maiores accusantium nostrum asperiores provident, quam modi ex inventore dolores id aspernatur architecto odio minima perferendis, explicabo. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Minima quos quasi itaque beatae natus fugit provident delectus, magnam laudantium odio corrupti sit quam. Optio aut ut repudiandae velit distinctio asperiores?

28 | 29 |

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Reprehenderit repellendus natus, sint ea optio dignissimos asperiores inventore a molestiae dolorum placeat repellat excepturi mollitia ducimus unde doloremque ad, alias eos!

30 |
31 |
32 |
33 | 34 | 35 | 36 | 37 | 38 | 39 |
Connect With Us:
40 | 41 | 42 | 43 |
44 | 45 |
Contact Info:
46 |

Phone: 408-341-0600

47 |

Email: foundation@zurb.com

48 |
49 |
50 |
51 |
52 | -------------------------------------------------------------------------------- /src/pages/drip.html: -------------------------------------------------------------------------------- 1 | --- 2 | subject: My Drip Email Template Subject 3 | --- 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 |

Responsive Emails

28 |

15 sections | 567 Min

29 |
30 |
31 | 32 |
33 | 34 | 35 | 36 |

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras egestas ullamcorper tristique. Aenean pharetra, ipsum eu varius elementum, odio ex malesuada neque, eget tempus ipsum neque ut ante. Vivamus volutpat faucibus metus quis ultrices. Fusce hendrerit purus in elit tincidunt sollicitudin. Duis ultrices odio id faucibus sagittis. Sed nulla leo, gravida non massa vitae, bibendum interdum sapien. Pellentesque rutrum sem bibendum tellus volutpat congue.

37 |
38 | 39 |
40 |
41 |
42 | 43 | 59 | 60 |
61 | -------------------------------------------------------------------------------- /src/pages/hero.html: -------------------------------------------------------------------------------- 1 | --- 2 | subject: My Hero Email Template Subject 3 | --- 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |

HERO

13 |
14 |
15 |
16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 |

Hi, Elijah Baily

25 |

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Nisi impedit sapiente delectus molestias quia.

26 | 27 | 28 |

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Veniam assumenda, praesentium qui vitae voluptate dolores. Click it!

29 |
30 |

Title Ipsum This is a note.

31 |

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Nisi repellat, harum. Quas nobis id aut, aspernatur, sequi tempora laborum corporis cum debitis, ullam, dolorem dolore quisquam aperiam! Accusantium, ullam, nesciunt. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ducimus consequuntur commodi, aut sed, quas quam optio accusantium recusandae nesciunt, architecto veritatis. Voluptatibus sunt esse dolor ipsum voluptates, assumenda quisquam.

32 | 33 | 34 | 35 |
36 |
37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 |
Connect With Us:
45 | 46 | 47 | 48 |
49 | 50 |
Contact Info:
51 |

Phone: 408-341-0600

52 |

Email: foundation@zurb.com

53 |
54 |
55 |
56 | 57 |
58 | 59 | Terms 60 | Privacy 61 | Unsubscribe 62 | 63 |
64 | 65 |
66 | -------------------------------------------------------------------------------- /src/pages/index.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: index-layout 3 | subject: My Email Templates 4 | --- 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |

Hi there!

16 |

Thanks for downloading Foundation for Emails! Your days of coding up painful HTML emails are officially over. You’ll soon be cranking out some slick, responsive emails in no time! To help get you up and running, we've put together 11 templates for the most common email use cases including newsletters, transactional emails, and marketing blasts. Feel free to customize them to your hearts content.

17 | 18 | 19 | 20 |
21 | 22 | Basic Template 23 | Drip Template 24 | Hero Template 25 | Marketing Template 26 | Newsletter Template 27 | Newsletter 2 Template 28 | Order Template 29 | Password Template 30 | Sidebar Template 31 | Sidebar Hero Template 32 | Welcome Template 33 | 34 |
35 | 36 | 37 | 38 |

Happy Coding,

39 |

The Foundation Team

40 | 41 | 42 | 43 | 44 |
45 |
46 |
47 | 48 | 49 | 50 |
51 | Keep on keepin' on. <3 ZURB 52 |
53 | 54 | 55 | 56 | -------------------------------------------------------------------------------- /src/pages/marketing.html: -------------------------------------------------------------------------------- 1 | --- 2 | subject: My Marketing Email Template Subject 3 | --- 4 | 5 | 6 | 7 | 8 |
9 | 10 |
11 |
12 | 13 |

Do Something Radical With This App.

14 | 15 |
16 |
17 | 18 | 19 | 20 | 21 | 22 |

It's Never Been Easier to Do Things.

23 |

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Consequatur pariatur unde magni repudiandae totam, accusamus facere eligendi. Ad nobis eius porro saepe et ab, aliquid, sed mollitia cumque suscipit aperiam.

24 |
25 |
26 | 27 | 28 |
29 | 30 |
31 |
Feature One
32 |

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rerum, quod quam unde earum.

33 |
34 | 35 |
36 | 37 |
38 |
Feature Two
39 |

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rerum, quod quam unde earum.

40 |
41 | 42 |
43 | 44 |
45 |
Feature Three
46 |

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Rerum, quod quam unde earum.

47 |
48 |
49 | 50 | 51 | 52 | 53 | 54 |

What Are You Waiting For? Get Started Today.

55 | 56 | 57 | 58 | 59 |
60 |
61 | 62 | 78 | 79 | 80 | 81 |
82 | -------------------------------------------------------------------------------- /src/pages/newsletter-2.html: -------------------------------------------------------------------------------- 1 | --- 2 | subject: My Other Newsletter Email Template Subject 3 | --- 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 |
14 |
15 |
16 | 17 | 18 |

This is a title

19 |

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quam at, nihil quas harum mollitia dolores odio. Inventore delectus nihil soluta quos, magni doloribus, voluptas aspernatur explicabo atque perspiciatis possimus voluptates.

20 |

Learn more

21 |
22 | 23 | 24 | 25 |
26 | 27 | 28 |

Sub Section Title

29 |

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quod eum eius numquam sint dolore voluptatibus beatae ab ad, dignissimos fugiat? Nisi odio commodi debitis eveniet tenetur provident aliquid tempora placeat.

30 |

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quod eum eius numquam sint dolore voluptatibus beatae ab ad, dignissimos fugiat? Nisi odio commodi debitis eveniet tenetur provident aliquid tempora placeat.

31 |
32 | 33 |

Sub Section Title

34 |

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quod eum eius numquam sint dolore voluptatibus beatae ab ad, dignissimos fugiat? Nisi odio commodi debitis eveniet tenetur provident aliquid tempora placeat.

35 |

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quod eum eius numquam sint dolore voluptatibus beatae ab ad, dignissimos fugiat? Nisi odio commodi debitis eveniet tenetur provident aliquid tempora placeat.

36 |
37 |
38 | 39 | 40 |

You received this email because you're signed up to receive updates from us. Click here to unsubscribe.

41 |
42 |
43 |
44 | -------------------------------------------------------------------------------- /src/pages/newsletter.html: -------------------------------------------------------------------------------- 1 | --- 2 | subject: My Newsletter Email Template Subject 3 | --- 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |

The Insider

12 |
13 | 14 |
15 | 16 | 17 | 18 |

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ipsa itaque illo doloribus soluta expedita dolores commodi fuga odit.

19 |

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Architecto reiciendis eos magni deleniti accusamus tempore, consectetur! Maxime amet, exercitationem nihil fugit eius esse voluptatum ab incidunt minima, saepe reiciendis ipsum.

20 |

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Architecto reiciendis eos magni deleniti accusamus tempore, consectetur! Maxime amet, exercitationem nihil fugit eius esse voluptatum ab incidunt minima, saepe reiciendis ipsum.

21 | 22 | 23 | 24 |

More Reading:

25 | 30 |
31 | 32 |

Get Involved:

33 | 38 |
39 |
40 | 41 |

You received this email because you're signed up to get updates from us. Click here to unsubscribe.

42 |
43 |
44 |
45 | -------------------------------------------------------------------------------- /src/pages/order.html: -------------------------------------------------------------------------------- 1 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |

Thanks for your order.

16 |

Thanks for shopping with us! Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ad earum ducimus, non, eveniet neque dolores voluptas architecto sed, voluptatibus aut dolorem odio. Cupiditate a recusandae, illum cum voluptatum modi nostrum.

17 | 18 | 19 | 20 | 21 | 22 | 23 |

24 | Payment Method
25 | Dubloons 26 |

27 |

28 | Email Address
29 | thecapn@pirates.org 30 |

31 |

32 | Order ID
33 | 239235983749636 34 |

35 |
36 | 37 |

38 | Shipping Method
39 | Boat (1–2 weeks)
40 | Shipping Address
41 | Captain Price
42 | 123 Maple Rd
43 | Campbell, CA 95112 44 |

45 |
46 |
47 |
48 | 49 |

Order Details

50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 |
Item#Price
Ship's Cannon2$100
Ship's Cannon2$100
Ship's Cannon2$100
Subtotal:$600
61 | 62 |
63 | 64 |

What's Next?

65 | 66 |

Our carrier raven will prepare your order for delivery. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Modi necessitatibus itaque debitis laudantium doloribus quasi nostrum distinctio suscipit, magni soluta eius animi voluptatem qui velit eligendi quam praesentium provident culpa?

67 |
68 |
69 | 70 | 71 | 72 | 73 | 74 |

75 | Call us at 800.555.1923
76 | Email us at support@discount.boat 77 |

78 |
79 | 80 |

81 | 123 Maple Rd
82 | Campbell, CA 95112 83 |

84 |
85 |
86 |
87 | -------------------------------------------------------------------------------- /src/pages/password.html: -------------------------------------------------------------------------------- 1 | --- 2 | subject: My Password Email Template Subject 3 | --- 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |

Pirate Retirement Services

13 |
14 |
15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 |
23 | 24 | 25 | 26 |

Forgot Your Password?

27 | 28 | 29 | 30 |

It happens. Click the link below to reset your password.

31 | 32 | 33 |
34 | 35 |

You're getting this email because you've signed up for email updates. If you want to opt-out of future emails, unsubscribe here.

36 |
37 |
38 | 39 | 40 |
41 | -------------------------------------------------------------------------------- /src/pages/sidebar-hero.html: -------------------------------------------------------------------------------- 1 | --- 2 | subject: My Sidebar Hero Email Template Subject 3 | --- 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |

SIDEBAR HERO

13 |
14 |
15 |
16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 |

Hi, Elijah Baily

25 |

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Nisi impedit sapiente delectus molestias quia.

26 |
27 | 28 |
29 | 30 |

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Veniam assumenda, praesentium qui vitae voluptate dolores. Click it!

31 |
32 |
33 |
34 | 35 | 36 |

Hello, Han Fastolfe

37 |

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Laboriosam nobis velit, aliquid pariatur at fugit. Omnis at quae, libero iusto quisquam animi blanditiis neque, alias minima corporis, ab in explicabo?

38 |

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Maxime dignissimos voluptas minus, cupiditate voluptatem, voluptatum iste molestiae consectetur temporibus quae dolore nam possimus reprehenderit blanditiis laborum iusto sit. Perspiciatis, dolor.

39 | 40 | Lorem ipsum dolor sit amet, consectetur adipisicing elit. Culpa quas optio totam quidem, placeat sunt, sit iusto fugit. Harum omnis deleniti enim nihil iure, quis laudantium veniam velit animi debitis. Click It! 41 | 42 |

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Dolores minus eius amet alias odit accusantium, fugit perspiciatis nulla suscipit nisi. Laborum aliquid, voluptatum consectetur fugiat maxime architecto enim molestias aperiam!

43 |

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ex eveniet veritatis, magnam ipsam et vero necessitatibus. Deserunt facilis impedit, adipisci illo laboriosam assumenda fugiat dolorum nam odio aliquid, sit est.

44 | 45 |
46 | 47 | 48 |
Header
49 |

Sub-header

50 | 51 | Just a Plain Link » 52 | Just a Plain Link » 53 | Just a Plain Link » 54 | Just a Plain Link » 55 | Just a Plain Link » 56 | Just a Plain Link » 57 | Just a Plain Link » 58 | 59 |
60 | 61 |
CONNECT WITH US:
62 | 63 | 64 | 65 |

CONTACT INFO:

66 |

Phone: 408-341-0600

67 |

Email: foundation@zurb.com

68 |
69 |
70 |
71 | 72 |
73 | 74 | Terms 75 | Privacy 76 | Unsubscribe 77 | 78 |
79 | 80 |
81 | -------------------------------------------------------------------------------- /src/pages/sidebar.html: -------------------------------------------------------------------------------- 1 | --- 2 | subject: My Hero Sidebar Template Subject 3 | --- 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |

SIDEBAR

13 |
14 |
15 |
16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 |

Hello, Han Fastolfe

25 |

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Laboriosam nobis velit, aliquid pariatur at fugit. Omnis at quae, libero iusto quisquam animi blanditiis neque, alias minima corporis, ab in explicabo?

26 |

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Maxime dignissimos voluptas minus, cupiditate voluptatem, voluptatum iste molestiae consectetur temporibus quae dolore nam possimus reprehenderit blanditiis laborum iusto sit. Perspiciatis, dolor.

27 | 28 | Lorem ipsum dolor sit amet, consectetur adipisicing elit. Culpa quas optio totam quidem, placeat sunt, sit iusto fugit. Harum omnis deleniti enim nihil iure, quis laudantium veniam velit animi debitis. Click It! 29 | 30 |

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Dolores minus eius amet alias odit accusantium, fugit perspiciatis nulla suscipit nisi. Laborum aliquid, voluptatum consectetur fugiat maxime architecto enim molestias aperiam!

31 |

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ex eveniet veritatis, magnam ipsam et vero necessitatibus. Deserunt facilis impedit, adipisci illo laboriosam assumenda fugiat dolorum nam odio aliquid, sit est.

32 | 33 |
34 | 35 | 36 |
Header
37 |

Sub-header

38 | 39 | Just a Plain Link » 40 | Just a Plain Link » 41 | Just a Plain Link » 42 | Just a Plain Link » 43 | Just a Plain Link » 44 | Just a Plain Link » 45 | Just a Plain Link » 46 | 47 |
48 | 49 |
CONNECT WITH US:
50 | 51 | 52 | 53 |

CONTACT INFO:

54 |

Phone: 408-341-0600

55 |

Email: foundation@zurb.com

56 |
57 |
58 |
59 | 60 | 61 |
62 | 63 | Terms 64 | Privacy 65 | Unsubscribe 66 | 67 |
68 |
69 |
70 |
71 | -------------------------------------------------------------------------------- /src/pages/welcome.html: -------------------------------------------------------------------------------- 1 | --- 2 | subject: My Welcome Email Template Subject 3 | --- 4 | 5 | 6 | 7 | 8 |

Welcome to Kraken Academy

9 | 10 |
11 | 12 | About 13 | Course List 14 | Campus Map 15 | Contact 16 | 17 |
18 | 19 |
20 |
21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
32 | 33 | 34 | 35 |

An exciting future of terrorizing sailors awaits you at Kraken Academy.

36 |

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Atque culpa vel architecto, perspiciatis eius cum autem quidem, sunt consequuntur, impedit dolor vitae illum nobis sint nihil aliquid? Assumenda, amet, officia.

37 | 38 |
39 | 40 | krakenacademy.com 41 | Facebook 42 | Twitter 43 | (408)-555-0123 44 | 45 |
46 | 47 |
48 |
49 | 50 | 51 |
52 | -------------------------------------------------------------------------------- /src/partials/.gitkeep: -------------------------------------------------------------------------------- 1 | # You can delete this file. It's just here to make Git happy. 2 | --------------------------------------------------------------------------------