Description
Modulo para el envio de correos en las app de Rescuento
Installation
$ npm i --save @rescuento/emails
Setup
import { EmailsServiceModule } from '@rescuento/emails';
Configuracion para usar SendGrid
EmailsServiceModule.forRoot({
provider: 'sendgrid',
providerConfig: {
apiKey: 'SENDGRID_KEY_HERE'
},
senderName: 'Rescuento',
senderAddress: 'no-reply@rescuento.com',
minDelay: 500,
delayFactor: 2,
retries: 10,
maxDelay: 15000,
})
Configuracion para usar AWS SES
EmailsServiceModule.forRoot({
provider: 'aws',
providerConfig: {
region: 'us-east-1',
secretAccessKey: 'SECRET_KEY_HERE',
accessKey: 'ACCESS_KEY_HERE'
},
senderName: 'Rescuento',
senderAddress: 'no-reply@rescuento.com',
minDelay: 500,
delayFactor: 2,
retries: 10,
maxDelay: 15000,
})
Se puede configurar como un modulo dinámico
EmailsServiceModule.forRootAsync({
useFactory: () => {
return {
provider: 'sendgrid',
providerConfig: {
apiKey: 'SENDGRID_KEY_HERE'
},
senderName: 'Rescuento',
senderAddress: 'no-reply@rescuento.com',
minDelay: 500,
delayFactor: 2,
retries: 2,
maxDelay: 15000,
}
}
})
EmailsServiceModule.forRootAsync({
useExisting: ConfigService
})
EmailsServiceModule.forRootAsync({
useExisting: ConfigService,
imports: [ ConfigModule ]
})
Modo de uso
Para realizar las pruebas necesarias usaremos docker asi garantizamos mantener la misma plataforma que se va a usar en producción
import { EmailService, BasicEmail, MjmlTemplateEmail } from '@rescuento/emails';
constructor(private readonly emailService: EmailService) { }
function sendEmail(){
const email: BasicEmail = {
from: {
name: 'Rescuento',
email: 'no-reply@rescuento.com'
},
to: [{
name: 'Customer Name',
email: 'username@domain.com'
}],
subject: 'Esto es una prueba',
plainBody: 'Este es el mensaje en texto plano',
htmlBody: '<b>Aqui ponemos el email en formato HTML</b>'
}
await this.emailService.sendEmail(email);
}
function sendEmailFromTemplate(){
const email: MjmlTemplateEmail = {
mjmlTemplate: "MJML TEMPLATE",
templateData: {
"someKey": "Some Value"
},
from: {
name: 'Rescuento',
email: 'no-reply@rescuento.com'
},
to: [{
name: 'Customer Name',
email: 'username@domain.com'
}],
subject: 'Esto es una prueba',
}
return this.emailService.sendEmailWithTemplate(email);
}