typescript - Cómo enviar correo electrónico usando Angular 7
¿Cómo puedo crear un servicio de correo electrónico en Angular 7 que contenga un método para enviar correos electrónicos?
Por ejemplo:
// email.service.ts
import { Injectable } from ‘@angular/core’;
@Injectable()
export class EmailService {
constructor() { }
// method to fetch data from server
public sendEmail(): void {
// logic to send email
...
}
}
Soy nuevo en el desarrollo con Angular, así que cualquier ejemplo, caso de uso y/o fragmento de código es muy apreciado.
Respuesta #1
Podrías usar algún proveedor de BaaS (Backend como servicio), como Formspree. Es bastante sencillo de usar y te permite enviar correos electrónicos sin tener que escribir o configurar un backend. Todo lo que tienes que hacer es enviar una solicitud Http desde tu aplicación Angular y este servicio se encarga del resto.
- crear una cuenta en formspree.io
- haz clic en el botón «+Nuevo Formulario»
- introduce un correo electrónico en el que quieras recibir los correos
Entonces obtendrás un endpoint único para este formulario recién creado que puedes usar para enviar (post) correos electrónicos desde tu aplicación Angular. El endpoint se verá algo así: https://formspree.io/asdlf7asdf
Aquí hay un ejemplo de código que usa formularios dirigidos por plantillas:
El formulario html
<form (ngSubmit)="onSubmit(contactForm)" #contactForm="ngForm">
<input type="text" placeholder="Name" name="name" ngModel required #name="ngModel">
<input type="text" placeholder="Email" email name="email" ngModel required #email="ngModel">
<textarea placeholder="Messages" name="messages" ngModel required #messages="ngModel"></textarea>
<input type="submit" value="Send">
</form>
El código detrás
onSubmit(contactForm: NgForm) {
if (contactForm.valid) {
const email = contactForm.value;
const headers = new HttpHeaders({ 'Content-Type': 'application/json' });
this.http.post('https://formspree.io/asdlf7asdf',
{ name: email.name, replyto: email.email, message: email.messages },
{ 'headers': headers }).subscribe(
response => {
console.log(response);
}
);
}
}
Puedes hacer mucho más con este (u otros) servicios, pero esto sería la idea básica.
Respuesta #2
Angular funciona del lado del cliente y para enviar correos electrónicos necesitas un servidor, así que creo que por ahora es imposible enviar correos electrónicos usando solo Angular; necesitas usar una aplicación del lado del servidor para enviar correos electrónicos.
