I have a bootstrap form for email services for angular 6 app and nodejs, I am using nodemailer for sendemail in my app, unfortunatelly does not work. I ma getting the following error:

Failed to load resource: net::ERR_CONNECTION_REFUSED : :3000/contact/send:1

here is the form

 <form [formGroup]="angForm" novalidate> <div> <h3> Write to us </h3> </div> <div> <div> <div> <input type="text" formControlName="name" placeholder="name" #name> </div> <div *ngIf="angForm.controls['name'].invalid && (angForm.controls['name'].dirty || angForm.controls['name'].touched)"> <div *ngIf="angForm.controls['name'].errors.required"> Name is required. </div> </div> <div> <input type="email" formControlName="email" placeholder="email" #email> </div> <div *ngIf="angForm.controls['email'].invalid && (angForm.controls['message'].dirty || angForm.controls['message'].touched)"> <div *ngIf="angForm.controls['message'].errors.required"> message is required. </div> </div> </div> <div> <div> <textarea placeholder="Message" formControlName="message" #message rows="3"></textarea> </div> <div *ngIf="angForm.controls['message'].invalid && (angForm.controls['message'].dirty || angForm.controls['message'].touched)"> <div *ngIf="angForm.controls['message'].errors.required"> message is required. </div> </div> </div> </div> <flash-messages></flash-messages> <div> <div> <button (click)="sendMail(name.value, email.value, message.value)" [disabled]="angForm.pristine || angForm.invalid" name="submit" type="submit" value="SEND MESSAGE">SEND MESSAGE </button> </div> </div> </form> 

Here is contact,js (node mailer settings and routes)

const express = require('express'); const router = express.Router(); const request = require('request'); const nodemailer = require('nodemailer'); router.get('/send', (req, res) => { const outputData = ` <p>You have a new contact request</p> <h3>Contact Details</h3> <ul> <li>Name: ${req.body.name}</li> <li>Email: ${req.body.email}</li> </ul> <h3>Message</h3> <p>${req.body.message}</p> `; let transporter = nodemailer.createTransport({ service: 'gmail', secure: false, port: 25, auth: { user: 'MY EMAIL', pass: 'THE PASSWORD' }, tls: { rejectUnauthorized: false } }); let HelperOptions = { from: '"MYNAME" <MYEMAIL, to: 'MYEMAIL', subject: 'Majeni Contact Request', text: 'Hello', html: outputData }; transporter.sendMail(HelperOptions, (error, info) => { if (error) { return console.log(error); } console.log("The message was sent!"); console.log(info); }); }); module.exports = router; 

here is the server js.

// server.js const express = require('express'); const bodyParser = require('body-parser'); const cors = require('cors'); const path = require('path'); const app = express(); // Port Number const port = process.env.PORT || 3000 // Run the app by serving the static files // in the dist directory app.use(express.static(path.join(__dirname, '/majeni/dist/majeni'))); // Body Parser Middleware app.use(bodyParser.json()); //routes const contact = require('./app/routes/contact'); app.use('/contact', contact); // CORS Middleware app.use(cors()); // If an incoming request uses // a protocol other than HTTPS, // redirect that request to the // same url but with HTTPS const forceSSL = function () { return function (req, res, next) { if (req.headers['x-forwarded-proto'] !== 'https') { return res.redirect( [' req.get('Host'), req.url].join('') ); } next(); } } // Instruct the app // to use the forceSSL // middleware app.use(forceSSL()); // For all GET requests, send back index.html // so that PathLocationStrategy can be used app.get('/*', function (req, res) { res.sendFile(path.join(__dirname + '/majeni/dist/majeni/index.html')); }); // Start Server app.listen(port, () => { console.log('Server started on port '+port); }); 

UPDATE

Here is service

import { Injectable } from '@angular/core'; import { Headers, Http, Response } from '@angular/http'; import { Jsonp } from '@angular/http'; @Injectable({ providedIn: 'root' }) export class ContactService { constructor(private http: Http) { } sendEmail(name, email, message) { const uri = ' const obj = { name: name, email: email, message: message, }; return this.http.post(uri, obj); } } 

What is missing in my code?

2 Answers

Failed to load resource: net::ERR_CONNECTION_REFUSED : :3000/contact/send:1

Your error means your client application is Unable to connect to your nodejs server.

Fix

Your code :

const uri = ' 

Will work if nodejs server is running on port 3000 on localhost.

3

For anyone else getting this error. Check that your NodeJS is not crashing. If a previous request causes your NodeJS server to crash or restart this is the same error on subsequent requests.

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy