Angular + Express + Nodemailer不起作用

时间:2018-12-27 18:06:49

标签: angular express nodemailer

问题是,当我在一个单独的项目中进行操作时,这些组合实际上对我有用,这是一个简单的项目,没有其他组件,只有app.component。 但是,将它包含在我正在研究的网站项目中时,它并没有加起来。

主要地,引起我注意的是,当我在我的contacto.component.ts中使用参数时,它会编译,但是整个部分只是崩溃而网站会停止正常运行,这不会发生我的另一个项目,但是我不能删除它,因为它把整个事情联系在一起。我也想知道我是否不弄乱路线。

Contacto.component.ts:

import { Component, OnInit } from '@angular/core';
import { FormGroup, FormControl, Validators, FormArray } from '@angular/forms';

import { MessageService } from '../../services/message.service';

import * as _swal from 'sweetalert';
import { SweetAlert } from 'sweetalert/typings/core';
const swal: SweetAlert = _swal as any;

@Component({
  selector: 'app-contacto',
  templateUrl: './contacto.component.html',
  styleUrls: ['./contacto.component.css']
})

export class ContactoComponent{


  constructor(public _MessageService: MessageService) {



  }

  contactForm(form) {
    this._MessageService.sendMessage(form).subscribe(() => {
      swal("Formulario de contacto", "Mensaje enviado correctamente", 'success');
    });

  } 
}

这是使用的message.service:

import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';

@Injectable()
export class MessageService {

  constructor(private _http: HttpClient) { }

  sendMessage(body) {
    return this._http.post('http://localhost:3000/formulario', body); //para nodemailer. http client angular.
  }

}

这是快递位:

const express = require('express');
const cors = require('cors');
const bodyParser = require('body-parser');
const configMensaje = require('./configMensaje');

const app = express();
app.use(bodyParser.json());
app.use(cors())

app.post('/formulario', (req, res) => {
  configMensaje(req.body); //recibe los datos del form
  res.status(200).send();
})

app.listen(3000, () => {
  console.log('Servidor corriendo')
});

这是nodemailer位:

const nodemailer = require('nodemailer');


module.exports = (formulario) => {


      console.log('Credentials obtained, sending message...');

      // Create a SMTP transporter object

        const transporter = nodemailer.createTransport({
          host: 'smtp.gmail.com',
          port: 465,
          auth: {
              user: 'sofiaespada20@gmail.com',
              pass: 'Valentino10'
          }
      });

      // Message object
      const message = {
        from: `"Sofia" <sofiaespada20@gmail.com>`, 
        to: `"${formulario.nombre}" <${formulario.email}>`, 
        subject: formulario.asunto,
        html: `
        <strong>Nombre:</strong> ${formulario.nombre} <br/>
        <strong>Nombre:</strong> ${formulario.apellido} <br/>
        <strong>E-mail:</strong> ${formulario.email}  <br/>
        <strong>Mensaje:</strong> ${formulario.mensaje}
        `
      };

      transporter.sendMail(message, (err, info) => {
          if (err) {
              console.log('Error occurred. ' + err.message);
              return process.exit(1);
          }

          console.log('Message sent: %s', info.messageId);
          console.log('Preview URL: %s', nodemailer.getTestMessageUrl(info));
      });
}  

1 个答案:

答案 0 :(得分:0)

它是nodejs中非常常见的功能。您可以在下面的链接中找到有效的演示:

https://www.jsonworld.com/demo/detail/17/nodejs/Send-email-using-angularjs-and-nodejs-nodemailer-module