Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <form action="/send-email" method="post">
- <div class="row">
- <div class="col-md-4"></div>
- <div class="form-group col-md-4">
- <label for="to">To:</label>
- <input type="email" class="form-control" name="to">
- </div>
- </div>
- <div class="row">
- <div class="col-md-4"></div>
- <div class="form-group col-md-4">
- <label for="subject">Subject:</label>
- <input type="text" class="form-control" name="subject">
- </div>
- </div>
- <div class="row">
- <div class="col-md-4"></div>
- <div class="form-group col-md-4">
- <label for="body">Body:</label>
- <textarea cols="5" rows="5" class="form-control" name="body"></textarea>
- </div>
- </div>
- <div class="row">
- <div class="col-md-4"></div>
- <div class="form-group col-md-4">
- <button type="submit" class="btn btn-success">Send</button>
- </div>
- </div>
- </div>
- </form>
- // These are important and needed before anything else
- import 'zone.js/dist/zone-node';
- import 'reflect-metadata';
- import { renderModuleFactory } from '@angular/platform-server';
- import { enableProdMode } from '@angular/core';
- import * as express from 'express';
- import { join } from 'path';
- import { readFileSync } from 'fs';
- // Import module map for lazy loading
- import { provideModuleMap } from '@nguniversal/module-map-ngfactory- loader';
- // Faster server renders w/ Prod mode (dev mode never needed)
- enableProdMode();
- // Express server
- const app = express(),
- nodeMailer = require('nodemailer'),
- bodyParser = require('body-parser');
- const PORT = process.env.PORT || 4000;
- const DIST_FOLDER = join(process.cwd(), 'dist');
- const { AppServerModuleNgFactory, LAZY_MODULE_MAP } = require('./dist/server/main');
- // Our index.html we'll use as our template
- const template = readFileSync(join(DIST_FOLDER, 'browser', 'index.html')).toString();
- app.engine('html', (_, options, callback) => {
- renderModuleFactory(AppServerModuleNgFactory, {
- // Our index.html
- document: template,
- url: options.req.url,
- // DI so that we can get lazy-loading to work differently (since we need it to just instantly render it)
- extraProviders: [
- provideModuleMap(LAZY_MODULE_MAP)
- ]
- }).then(html => {
- callback(null, html);
- });
- });
- app.set('view engine', 'html');
- app.set('views', join(DIST_FOLDER, 'browser'));
- // Server static files from /browser
- app.get('*.*', express.static(join(DIST_FOLDER, 'browser')));
- // All regular routes use the Universal engine
- app.get('*', (req, res) => {
- res.render(join(DIST_FOLDER, 'browser', 'index.html'), { req });
- });
- app.use(bodyParser.urlencoded({ extended: true }));
- app.use(bodyParser.json());
- //My code for Nodemailer
- app.post('/send-email', function (req, res) {
- let transporter = nodeMailer.createTransport({
- service: 'gmail',
- auth: {
- user: '*****',
- pass: '*****'
- }
- });
- let mailOptions = {
- from: '"Krunal Lathiya" <xx@gmail.com>', // sender address
- to: req.body.to, // list of receivers
- subject: req.body.subject, // Subject line
- text: req.body.body, // plain text body
- html: '<b>NodeJS Email Tutorial</b>' // html body
- };
- transporter.sendMail(mailOptions, (error, info) => {
- if (error) {
- return console.log(error);
- }
- console.log('Message %s sent: %s', info.messageId, info.response);
- res.render('index');
- });
- });
- // Start up the Node server
- app.listen(PORT, () => {
- console.log(`Node server listening on http://localhost:${PORT}`);
- });
Add Comment
Please, Sign In to add comment